Vue中解决多个组件引用了同一个对象作为数据时,当一个组件改动了数据对象时,其他对象的数据也会随着同步改动的情况
当组件间传递对象时,由于此对象的引用类型指向的都是一个地址(除了基本类型跟null,对象之间的赋值,只是将地址指向同一个,而不是真正意义上的拷贝),所以会导致下面的问题:var obj = {a:10};var obj2 = obj;obj2.a = 20; // obj2.a改变了,alert(obj.a); // 20,obj的a跟着改变如果需要这种双向数据绑定的话,那么是最好的,但是如果不需
·
当组件间传递对象时,由于此对象的引用类型指向的都是一个地址(除了基本类型跟null,对象之间的赋值,只是将地址指向同一个,而不是真正意义上的拷贝),所以会导致下面的问题:
var
obj = {a:10};
var
obj2 = obj;
obj2.a = 20;
// obj2.a改变了,
alert(obj.a);
// 20,obj的a跟着改变
如果需要这种双向数据绑定的话,那么是最好的,但是如果不需要,而是希望各组件的对象数据之间相互独立,即是互不关联的对象的副本的话,那么可以使用下面的方法:
computed: {
data:
function
() {
var
obj={};
obj=JSON.parse(JSON.stringify(
this
.templateData));
//this.templateData是父组件传递的对象
return
obj
}
}
更多推荐
已为社区贡献17条内容
所有评论(0)