Vue中组件之间数据的传递的示例代码


Posted in Javascript onSeptember 08, 2017

Vue中组件的作用域是隔离的,父组件中的数值子组件看不到!也就是说,用angular作比喻,组件的scope天生是scope:()的!
如果父组件需要往子组件中传数据,此时应该使用标签属性:

<div id="app">
   <my-compo c="886"></my-compo>
</div>

子组件中,用props声明这个值即可。并且在template里面可以直接使用{{c}}来获得这个属性,而不需要写为{{this.props.c}}

import Vue from "vue";

const MyCompo = Vue.extend({
  template : `
    <div>
      <h1>我是MyCompo组件,我的a值是{{a}}</h1>
      <h1>子组件c:{{c}}</h1>
      <input type="button" value="+++" v-on:click="add"/>
    </div>
  `,
  props : ["c"],
  data : function(){
    return {
      a : 1, 
      b : 2
    }
  },
  methods : {
    add : function(){
      this.a ++;
    }
  }
});

export default MyCompo;

如果父组件中要传一个动态的值(就是父组件的data,不是死数),此时要用v-bind:来传递。
v-bind指令表示动态属性。

<div id="app">
   <my-compo v-bind:c="c"></my-compo>
</div>

此时我们研究,子组件改变了这个值,父组件的值变不变。答:默认情况下不变!

<my-compo v-bind:c="c"></my-compo>

import Vue from "vue";

const MyCompo = Vue.extend({
  template : `
    <div>
      <h1>我是MyCompo组件,我的a值是{{a}},我的c值是:{{c}}</h1>
      <input type="button" value="+++" v-on:click="add"/>

    </div>
  `,
  props : ["c"],
  methods : {
    add : function(){
      this.c ++;
    }
  }
});

export default MyCompo;

子组件的c值变化了,但是外面不变!

也就是说,默认情况下,父组件中的属性值如果传给儿子,子组件改变这个值,仅仅改变子组件中的值,父组件中的值不变。

如果非要让子组件能够改变父组件中的值,要加sync修饰符:

<my-compo v-bind:c.sync="c"></my-compo>

上面的c属性是一个基本类型值常数3。此时我们试试引用类型值。

父组件中增加d属性,值是json。

import Vue from "vue";
import MyCompo from "./components/MyCompo.js";

new Vue({
  el : "#app",
  data : {
    c : 333,
    d : {
      v : 8888
    }
  },
  components : {
    "my-compo" : MyCompo
  }
});

传给子组件:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Vue学习</title>
</head>
<body>
  <div id="app">
    <h1>我是父亲,我的c: {{c}} ,我的d:{{d | json}}</h1>
     <my-compo v-bind:c.sync="c" v-bind:d="d"></my-compo>
  </div>

  <script type="text/javascript" src="public/bundle.js"></script>
</body>
</html>

子组件改变d的时候,父亲也变了!!!虽然我们没加.sync。

总结:

Vue中基本类型值默认单向传递,双向加sync。

引用类型值,默认双向传递。

小tip,v-bind的缩写语法就是冒号。

Vue中组件之间数据的传递的示例代码

属性可以验证类型、必填等等。

props : {
    "c" : null,
    "d" : null,
    "e" : {
      type : Number,
      required : true
    }
},

Vue中组件之间数据的传递的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
简单的无缝滚动程序-仅几行代码
May 08 Javascript
jQuery实现单行文字间歇向上滚动源代码
Jun 02 Javascript
详解JavaScript中的blink()方法的使用
Jun 08 Javascript
浅谈Javascript实现继承的方法
Jul 06 Javascript
jQuery实现美观的多级动画效果菜单代码
Sep 06 Javascript
基于jQuery实现的菜单切换效果
Oct 16 Javascript
简单实现的JQuery文本框水印插件
Jun 14 Javascript
js中apply与call简单用法详解
Nov 06 Javascript
实例教学如何写vue插件
Nov 30 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 jQuery
vue cli2.0单页面title修改方法
Jun 07 Javascript
JS数组的常用10种方法详解
May 08 Javascript
详解jquery插件jquery.viewport.js学习使用方法
Sep 08 #jQuery
JavaScript实现开关等效果
Sep 08 #Javascript
浅谈React Native 中组件的生命周期
Sep 08 #Javascript
Vue仿手机qq的实例代码(demo)
Sep 08 #Javascript
关于Ajax的原理以及代码封装详解
Sep 08 #Javascript
vue父子组件的嵌套的示例代码
Sep 08 #Javascript
jQuery选择器中的特殊符号处理方法
Sep 08 #jQuery
You might like
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
简单实现php上传文件功能
2017/09/21 PHP
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
Python中的__init__作用是什么
2020/06/09 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
酒后驾驶检讨书
2014/01/27 职场文书
自主招生自荐信指南
2014/02/04 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书