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 相关文章推荐
图片延迟加载的实现代码(模仿懒惰)
Mar 29 Javascript
jquery.ajax之beforeSend方法使用介绍
Dec 08 Javascript
javascript实现数字倒计时特效
Mar 30 Javascript
javascript设计模式之中介者模式学习笔记
Feb 15 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
Mar 09 Javascript
bootstrap daterangepicker汉化以及扩展功能
Jun 15 Javascript
Vue组件通信实践记录(推荐)
Aug 15 Javascript
详解Puppeteer前端自动化测试实践
Feb 21 Javascript
JS co 函数库的含义和用法实例总结
Apr 08 Javascript
Vue切换div显示隐藏,多选,单选代码解析
Jul 14 Javascript
JavaScript语句错误throw、try及catch实例解析
Aug 18 Javascript
js实现右键弹出自定义菜单
Sep 08 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
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
js confirm()方法的使用方法实例
2013/07/13 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
python抓取网页内容示例分享
2014/02/24 Python
对于Python中RawString的理解介绍
2016/07/07 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
静态变量和实例变量的区别
2015/07/07 面试题
高中毕业自我鉴定范文
2013/10/02 职场文书
药学专业大专生的自我评价
2013/12/12 职场文书
党支部承诺书范文
2014/03/28 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
2015年中个人总结范文
2015/03/10 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
Python中使用subprocess库创建附加进程
2021/05/11 Python
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python
Python 绘制多因子柱状图
2022/05/11 Python