Vue中组件之间数据的传递的示例代码

网友投稿 258 2023-04-06


Vue中组件之间数据的传递的示例代码

vue中组件的作用域是隔离的,父组件中的数值子组件看不到!也就是说,用angular作比喻,组件的scope天生是scope:()的!

如果父组件需要往子组件中传数据,此时应该使用标签属性:

&lhttp://t;my-compo c="886">

子组件中,用props声明这个值即可。并且在template里面可以直接使用{{c}}来获得这个属性,而不需要写为{{this.props.c}}

import Vue from "vue";

const MyCompo = Vue.extend({

template : `

`,

props : ["c"],

data : function(){

return {

a : 1,

b : 2

}

},

methods : {

add : function(){

this.a ++;

}

}

});

export default MyCompo;

如果父组件中要传一个动态的值(就是父组件的data,不是死数),此时要用v-bind:来传递。

v-bind指令表示动态属性。

此时我们研究,子组件改变了这个值,父组件的值变不变。答:默认情况下不变!

import Vue from "vue";

const MyCompo = Vue.extend({

template : `

`,

props : ["c"],

methods : {

add : function(){

this.c ++;

}

}

});

export default MyCompo;

子组件的c值变化了,但是外面不变!

也就是说,默认情况下,父组件中的属性值如果传给儿子,子组件改变这个值,仅仅改变子组件中的值,父组件中的值不变。

如果非要让子组件能够改变父组件中的值,要加sync修饰符:

上面的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

}

});

传给子组件:

子组件改变d的时候,父亲也变了!!!虽然我们没加.sync。

总结:

Vue中基本类型值默认单向传递,双向加sync。

引用类型值,默认双向传递。

小tip,v-bind的缩写语法就是冒号。

属性可以验证类型、必填等等。

props : {

"c" : null,

"d" : null,

"e" : {

type : Number,

required : true

}

},


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 中桥接模式——对象结构型模式的实例详解
下一篇:cocos creator Touch事件应用(触控选择多个子节点的实例)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~