在 Vue.js 中,我有一个带有动态添加/编辑属性的数据对象,这些属性本身就是数组。例如,属性开始如下:
data: function () {
return {
vals: {}
};
}
随着时间的推移,通过各种按钮点击等,vals
可能会如下所示(实际属性名称和值是 100% 动态的,基于多种因素):
vals: {
set1: [
{
prop1: 123,
prop2: 'hello'
},
{
prop1: 456,
prop2: 'bye'
}
],
set2: [
{
prop3: 'Why?!',
prop4: false
}
]
}
随着数组属性(即set1
和set2
)的更改,我希望能够对这些更改做出反应。
例如,我可能会在我的代码中执行以下操作:
var prop = 'set1';
this.vals[prop].push({
{
prop1: 789,
prop2: 'hmmm...'
}
});
但是,当我这样做时,组件并没有更新(我推测是因为我将一个对象推到对象的子数组的末尾;而 Vue.js 似乎没有跟踪这些更改)。
我已经能够通过执行this.$forceUpdate();
上述操作来强制组件具有反应性push
,但我想当对象被推到对象子数组的末尾时,必须有一种更雄辩的方式让 Vue.js 具有反应性。
有谁知道更好的方法来尝试做我想要实现的目标?谢谢你。