时间:2021-05-26
Vue中组件的作用域是隔离的,父组件中的数值子组件看不到!也就是说,用angular作比喻,组件的scope天生是scope:()的!
如果父组件需要往子组件中传数据,此时应该使用标签属性:
子组件中,用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指令表示动态属性。
此时我们研究,子组件改变了这个值,父组件的值变不变。答:默认情况下不变!
<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的缩写语法就是冒号。
属性可以验证类型、必填等等。
props : { "c" : null, "d" : null, "e" : { type : Number, required : true }},以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Vue2.0实现组件之间数据交互和通信操作。分享给大家供大家参考,具体如下:Vue2.0组件之间数据交互和通信。Vue2.0废弃了dispatch
在面对单个组件逻辑复杂需要拆分时,难免会遇到父子组件之间数据传递的问题。那么我们来了解一下在父子组件之间进行数据传递时需要遵循哪些约定,以及要注意哪些问题。如何
**解决的问题:**使用$attrs和$listeners实现祖孙组件之间的数据传递,也就是多重嵌套组件之间的数据传递。**注意:**本方法针对vue2.4版本
一、父组件向子组件传递数据在Vue中,可以使用props向子组件传递数据。子组件部分:这是header.vue的HTML部分,logo是在data中定义的变量。
在通信的时候容易出错,或者信息根本传不过来。那么这里就示例一下,怎么通过组件之间的通信完成点击事件。index.vue文件中:点我传递中介引入组件,即是要弹出的