我有一个包含属性name
和age
的对象数组。数组的名称是person
。
问题是我将数组元素的属性更新为:
this.person[0].name = "godfather";
原始数组已更新,但组件视图保持不变。我发现问题是角度变化检测不会将数组内的更新视为变化。所以,我尝试了下面的语句(更改对数组的引用):
this.person = this.person.slice();
我只是想知道,使用后面的陈述是一种好的做法还是有一些更好的方法来处理上述问题?
答案 0 :(得分:1)
这取决于此slice()
操作的费用。如果它适用于小型阵列,它可能不会造成任何伤害,但如果它适用于大型阵列,则可能会导致显着的性能问题。在这种情况下,使用一个观察者可以主动通知接收者更改是一种更好的方法。
答案 1 :(得分:0)
您的方法是slice
的未指定用法,可能适用于某些但不是所有JS实现。
我成功地使用了它:
this.person = JSON.parse(JSON.stringify(this.person));