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 相关文章推荐
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
Oct 21 Javascript
js限制文本框只能输入数字(正则表达式)
Jul 15 Javascript
JS返回iframe中frameBorder属性值的方法
Apr 01 Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 Javascript
jquery ui dialog替代confirm实例分析
Jan 25 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
Jun 14 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
Mar 17 Javascript
Angular实现的进度条功能示例
Feb 18 Javascript
Vue2 模板template的四种写法总结
Feb 23 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
May 24 Javascript
vue中touch和click共存的解决方式
Jul 28 Javascript
Vue项目利用axios请求接口下载excel
Nov 17 Vue.js
详解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的计数器程序
2006/10/09 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
JavaScript的parseInt 取整使用
2011/05/09 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
Python 用户登录验证的小例子
2013/03/06 Python
Python爬取三国演义的实现方法
2016/09/12 Python
在django中,关于session的通用设置方法
2019/08/06 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
中国旅游网站:途牛旅游网
2019/09/29 全球购物
养殖行业的创业计划书
2014/01/05 职场文书
环保倡议书400字
2014/05/15 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
单位授权委托书范文
2014/08/02 职场文书
平面设计专业求职信
2014/08/09 职场文书
小学家长通知书评语
2014/12/31 职场文书
工程质量保证书
2015/05/09 职场文书
文艺节目主持词
2015/07/06 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书