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 相关文章推荐
由JavaScript中call()方法引发的对面向对象继承机制call的思考
Sep 12 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
Aug 02 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
Apr 28 Javascript
window.onload绑定多个事件的两种解决方案
May 15 Javascript
学习Angular中作用域需要注意的坑
Aug 17 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
Aug 29 Javascript
babel基本使用详解
Feb 17 Javascript
javascript中mouseenter与mouseover的异同
Jun 06 Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 Javascript
element实现合并单元格通用方法
Nov 13 Javascript
vue抽出组件并传值实例
Jul 31 Javascript
在vue中嵌入外部网站的实现
Nov 13 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
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
jQuery实现视频展示效果
2020/05/30 jQuery
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
python中列表和元组的区别
2017/12/18 Python
python3.5安装python3-tk详解
2019/04/26 Python
python日志logging模块使用方法分析
2019/05/23 Python
详解Python time库的使用
2019/10/10 Python
Python更新所有已安装包的操作
2020/02/13 Python
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
护理工作感言
2014/01/16 职场文书
2014年迎新年活动方案
2014/02/19 职场文书
五一手机促销方案
2014/03/08 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
辞职信格式范文
2015/05/13 职场文书
国情备忘录观后感
2015/06/04 职场文书
小学教育见习总结
2015/06/23 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
redis数据结构之压缩列表
2022/03/21 Redis