2017-10-20 42 views

回答

3

Vue.js不能在物体检测一个新的属性。见https://vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats

您可以使用Vue.set():

var size = Object.keys(this.modules).length; 
     Vue.set(this.modules,size,{ 
      enumerate: '1.1', 
      name: 'test', 
      description: 'test d', 
      type: 'module', 
      criteria: {} 
     }); 
+0

或将'this.modules'更改为数组并使用'this.modules.push({...})'。 – Botje

+0

是@Botje你可以使用数组,但是如果EdgarAlejandro更喜欢一个对象... – Thierry

3

它看起来像你正在运行到一个对象变化检测需要注意的vue.js文档中定义。具体而言,您似乎正在添加之前不存在的新对象属性,因此未检测到更改。

这里是一个可能的修正:

methods: { 
    addModule:function(){ 
     var size = Object.keys(this.modules).length; 
     this.modules[size] = { 
      enumerate: '1.1', 
      name: 'test', 
      description: 'test d', 
      type: 'module', 
      criteria: {} 
     }; 
     this.modules = Object.assign({}, this.modules); 
     console.log(this.modules); 
    } 
} 

所添加的线将作为一个分配给原始对象的克隆版本。由于这个克隆对象完全是一个单独的对象,所以相关的更改将被强制检测。

但是,需要注意的是,如果需要,深层克隆将需要额外的工作。

相关问题