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中的双感叹号判断
Nov 11 Javascript
用jquery.sortElements实现table排序
May 04 Javascript
Javascript中的默认参数详解
Oct 22 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
学习javascript面向对象 理解javascript对象
Jan 04 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
Sep 06 Javascript
使用vue-router完成简单导航功能【推荐】
Jun 28 Javascript
脚手架vue-cli工程webpack的作用和特点
Sep 29 Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 Javascript
vue实现打地鼠小游戏
Aug 21 Javascript
解决vue scoped scss 无效的问题
Sep 04 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获取网络上文件
2006/10/09 PHP
.htaccess文件保护实例讲解
2011/02/06 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
关于php开启错误提示的总结
2019/09/24 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
Three.js基础学习教程
2017/11/16 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
python字符串连接的N种方式总结
2014/09/17 Python
python检测是文件还是目录的方法
2015/07/03 Python
python 上下文管理器使用方法小结
2017/10/10 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
室内设计实习自我鉴定
2013/09/25 职场文书
销售高级职员求职信
2013/10/29 职场文书
读书演讲主持词
2014/03/18 职场文书
出国留学担保书
2014/05/20 职场文书
如何撰写创业策划书
2019/06/27 职场文书