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 相关文章推荐
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
Dec 20 Javascript
js简单实现标签云效果实例
Aug 06 Javascript
easyui Droppable组件实现放置特效
Aug 19 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
Aug 24 Javascript
面包屑导航详解
Dec 07 Javascript
Vue 创建组件的两种方法小结(必看)
Feb 23 Javascript
Vue实现active点击切换方法
Mar 16 Javascript
详解Angular如何正确的操作DOM
Jul 06 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
May 22 Javascript
JavaScript实现简单的计算器
Jan 16 Javascript
jQuery实现飞机大战小游戏
Jul 05 jQuery
vue-cropper插件实现图片截取上传组件封装
May 27 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将文本文件转换csv输出的方法
2014/12/31 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
php源码的使用方法讲解
2019/09/26 PHP
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
微信小程序用户授权,以及判断登录是否过期的方法
2019/05/10 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
浅析Python中else语句块的使用技巧
2016/06/16 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
使用python实现接口的方法
2017/07/07 Python
python验证码识别的示例代码
2017/09/21 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
Python+appium框架原生代码实现App自动化测试详解
2020/03/06 Python
深入了解NumPy 高级索引
2020/07/24 Python
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
平面设计自荐信
2013/10/07 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
助学贷款贫困证明
2014/09/23 职场文书
业务员管理制度范本
2015/08/06 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript