Vuejs-更新数组中的对象

时间:2019-04-04 09:50:44

标签: javascript vue.js

我正在使用VueJ,并且我有一个对象数组。我想做的是根据其索引更新数组中的对象。为此,我编写了一个方法:

updateRow(index) {
      this.inputs[index]={ "one": "test", "two": "test" }
    }

但是,对象只是不更新​​。我为此创建了以下jsbin。

https://jsbin.com/boturuluxe/1/edit?html,js,console,output

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

由于JavaScript的限制,Vue无法检测到对数组的以下更改:

  1. 直接用索引设置项目时,例如vm.items [indexOfItem] = newValue

  2. 当您修改数组的长度时,例如vm.items.length = newLength

解决方案是: this.$set(this.inputs, index, { "one": "test", "two": "test" })

Read more here

答案 1 :(得分:0)

使用此

updateRow(index) {
  Vue.set(this.inputs, index, { "one": "test", "two": "test" })
}

答案 2 :(得分:0)

您可以这样做:

updateRow(index) {
  this.inputs[index]={ "one": "test", "two": "test" };
  this.inputs = Object.assign({}, this.inputs);
  // assigning a new object reference
}

或者,

updateRow(index) {
  this.$set(this.inputs, index, { "one": "test", "two": "test" });
}

Vue docs reference