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 动态设置已知select的option的value值的代码
Dec 16 Javascript
JavaScript获取页面上某个元素的代码
Mar 13 Javascript
javascript的变量、传值、传址、参数之间关系
Jul 26 Javascript
值得分享和收藏的Bootstrap学习教程
May 12 Javascript
详解Node.js如何开发命令行工具
Aug 14 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
Sep 08 Javascript
canvas压缩图片转换成base64格式输出文件流
Mar 09 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
May 02 Javascript
js实现rem自动匹配计算font-size的示例
Nov 18 Javascript
vue实现nav导航栏的方法
Dec 13 Javascript
JavaScript享元模式原理与用法实例详解
Mar 09 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
Mar 16 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
对盗链说再见...
2006/10/09 PHP
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
2011/10/29 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
nodejs开发环境配置与使用
2014/11/17 NodeJs
javascript常用方法总结
2015/05/14 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
pytorch使用Variable实现线性回归
2019/05/21 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
python同步windows和linux文件
2019/08/29 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
Windows和Linux动态库应用异同
2016/07/28 面试题
Hibernate持久层技术
2013/12/16 面试题
医院节能减排方案
2014/06/13 职场文书
教师个人读书活动总结
2014/07/08 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
信息合作协议书
2014/10/09 职场文书
营业员岗位职责
2015/02/11 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL
ant design vue的form表单取值方法
2022/06/01 Vue.js