В 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 быть реактивным, когда дело доходит до объектов, помещаемых в конец подмассивов объектов.
Кто-нибудь знает лучший способ попробовать сделатьчто я пытаюсь достичье?Спасибо.