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 相关文章推荐
JS构建页面的DOM节点结构的实现代码
Dec 09 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
Dec 02 Javascript
javascript 操作符(~、&amp;、|、^、)使用案例
Dec 31 Javascript
jquery简单倒计时实现方法
Dec 18 Javascript
分享JavaScript监听全部Ajax请求事件的方法
Aug 28 Javascript
Vue.js双向绑定实现原理详解
Dec 22 Javascript
Webpack 之 babel-loader文件预处理器详解
Mar 23 Javascript
微信小程序Getuserinfo解决方案图解
Aug 24 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
Feb 28 Javascript
浅谈微信小程序列表埋点曝光指南
Oct 15 Javascript
JavaScript语句错误throw、try及catch实例解析
Aug 18 Javascript
vue打开新窗口并实现传参的图文实例
Mar 04 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
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
PHP之数组学习
2011/05/29 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
JS作用域链详解
2017/06/26 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
javascript实现点击产生随机图形
2021/01/25 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
使用Python对SQLite数据库操作
2017/04/06 Python
Python正则表达式完全指南
2017/05/25 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
matplotlib实现区域颜色填充
2019/03/18 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
Python实现一个论文下载器的过程
2021/01/18 Python
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
大一自我鉴定范文
2013/10/04 职场文书
实习生个人的自我评价
2013/12/08 职场文书
仓库理货员岗位职责
2013/12/18 职场文书
村级四风对照检查材料
2014/08/24 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python