【发布时间】:2018-11-19 20:04:04
【问题描述】:
这是一个代码sn-p
<div id="app">
<div v-for="(value, key) in data">
{{value.value}} {{value.newData}}
</div>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
data: {
'key1': {
value: true
},
'key2': {
value: false
}
}
}
},
mounted: function () {
setTimeout(() => {
var ch = Object.assign(this.data.key1, {newData: 'text'})
Vue.set(this.data, 'key1', ch)
}, 3000);
}
})
</script>
我希望看到
true text
false
但 DOM 从未更新。如果我更新已经存在的属性,如value,它会起作用。
如何更新 DOM 并将新键添加到 Vue 中的现有对象中?
谢谢。
@thanksd 注意到 Vue.set(this.data.key1, 'newData', 'text') 有效。在测试这种方法期间,我注意到如果放置
Object.assign(this.data.key1, {newData: 'text'})Vue.set 之前的代码会破坏逻辑。至少对我来说这看起来有点奇怪,但我希望它会有所帮助。
【问题讨论】: