首页 > 解决方案 > 如何用另一个“观察者”更新 vue“观察者”的所有属性

问题描述

我有两个 vue 'observer' 数据 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
      }
    }
  }
})

标签: vuejs2

解决方案


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

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


推荐阅读