【发布时间】:2018-01-15 09:47:52
【问题描述】:
我有一个看起来像这样的多维对象:
obj: {
1: {
'a' => [ [] ],
'b' => [ [] ]
},
2: {
'x' => [ [], [] ]
}
}
我的根目录中有它。我也有这个对象的手表,我正在相应地更新另一个对象......
new Vue({
el: '#app',
data: {
obj: {},
newObj: {}
},
watch: {
obj: {
handler(obj) {
}
}
}
})
我使用 newObj 作为 prop 并将其传递给组件以执行 for 循环。
在处理程序内部,如果我使用对对象的第一级键进行更改,则组件会更新 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 调试器,它会显示使用两种方式都按需要更新对象,但 DOM 不会改变。
正如我所说,我相信它不会观察内部键并对其做出响应。克服这个问题的正确方法是什么?
【问题讨论】:
标签: javascript dom vue.js vuejs2 vue-component