У меня есть многомерный объект, который выглядит так:
obj: {
1: {
'a' => [ [] ],
'b' => [ [] ]
},
2: {
'x' => [ [], [] ]
}
}
У меня это в моем корне. У меня также есть часы для этого объекта, и я обновляю другой объект соответственно...
new Vue({
el: '#app',
data: {
obj: {},
newObj: {}
},
watch: {
obj: {
handler(obj) {
}
}
}
})
Я использую newObj в качестве опоры и передаю его компоненту для выполнения циклов.
Внутри обработчика, если я использую внесение изменений в ключ первого уровня объекта, компонент обновляет dom DOM.
handler(obj) {
this.$set(this.newObj, key, {
[innerKey]: [ [] ]
});
}
Однако, если я пытаюсь изменить ключи вторичного уровня, компонент не обновляет DOM.
handler(obj) {
var key = 1;
var additions = ['a', 'b', 'c']
// First try:
var scafold = this.newObj[key]
scafold[additions[i]] = [ [] ];
this.newObj[key] = scafold;
// Second try:
this.$set(this.newObj[key], additions[i], [ [] ]);
}
Хотя, если я проверяю vue debugger, он показывает, что объект обновляется по желанию, используя оба способа, DOM не изменяется.
Как я уже сказал, я считаю, что он не смотрит внутренние ключи и не реагирует на него. Каков правильный способ преодоления этой проблемы?
Вы попробовали this.$forceUpdate();
после this.$set
?
delete this.newObj[key]
а затемthis.$set(this.transferForms, key, scalfold)
и это сработалоdelete this.newObj[key]
поскольку это приводит кdelete this.newObj[key]
производительности.this.$forceUpdate()
был специально создан для решения вашей проблемы, может также попробовать его.