如何用另一个“观察者”更新Vue“观察者”的所有属性

时间:2018-07-25 03:50:19

标签: vuejs2

我有两个具有相同键值的vue“观察者”数据a和b,我需要将b的值替换为a的值。如果b的值包含一个复杂的对象,我希望这个复杂的对象成为a的值。深度复制副本替换。我有一些想法:this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 }),但是someObject变得不可观察。你有什么好的方法吗?非常感谢你

https://codepen.io/yakiler/project/editor/DadznN#

var app = new Vue({
  el: '#demo',
    mounted: function () {

  },
  methods: {
    clickMe(){
      let pureData = {...this.copyData.v }; // get a pure data by vue Observer data
      let f = v => v && JSON.parse(JSON.stringify(v)) || {};
      let needUpdateData = this.originData.v;
      let returnValue = Object.assign({}, needUpdateData, f(pureData)); // exec replace value

      console.log('pureData',pureData);
      console.log('needUpdateData',needUpdateData);
      console.log('returnvalue',returnValue);
      console.log('originData',this.originData);
    }
  },
  data: function() {
    return {
      originData:{
        v:{a:1},b:2
      },
      copyData:{
        v:{a:0},b:0
      }
    }
  }
})

1 个答案:

答案 0 :(得分:0)

我会坚持Object.assign()。您应该能够毫不费力地管理观察者。最简单的解决方案是在组件的根目录中不包含someObject。为someObject创建包装器,然后在分配新值后,将自动重新创建观察者。

如果不清楚,请发布一些代码:-)

相关问题