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基本对象
Jan 11 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
Jul 09 Javascript
影响jQuery使用的14个方面
Sep 01 Javascript
jQuery检测鼠标左键和右键点击的方法
Mar 17 Javascript
漫谈JS引擎的运行机制 你应该知道什么
Jun 15 Javascript
js利用appendChild对标签进行排序的实现方法
Oct 16 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
详解如何在vue项目中使用layui框架及采坑
May 05 Javascript
vue实现跨域的方法分析
May 21 Javascript
layui数据表格 table.render 报错的解决方法
Sep 29 Javascript
微信小程序的引导页实现代码
Jun 24 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
Jul 11 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配置文件中最常用四个ini函数
2007/03/19 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
php中smarty区域循环的方法
2015/06/11 PHP
为你总结一些php系统类函数
2015/10/21 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
asp.net和php的区别点总结
2019/10/10 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
django 多数据库配置教程
2018/05/30 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
Python 读取位于包中的数据文件
2020/08/07 Python
会计学自我鉴定
2014/02/06 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
会计学专业求职信
2014/07/17 职场文书
教师节领导致辞
2015/07/29 职场文书
六一亲子活动感想
2015/08/07 职场文书
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
Redis中一个String类型引发的惨案
2021/07/25 Redis
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL