Vue中解决多个组件引用了同一个对象作为数据时,当一个组件改动了数据对象时,其他对象的数据也会随着同步改动的情况

当组件间传递对象时,由于此对象的引用类型指向的都是一个地址(除了基本类型跟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
   }
  }

猜你喜欢

转载自blog.csdn.net/weixin_38098192/article/details/80430036
今日推荐