【发布时间】:2017-03-28 08:29:26
【问题描述】:
简单的问题:当一个对象作为新属性时是否可以观察?
在 JSFiddle 中,我只初始化列表中第一项的属性“显示”。 当我点击第一个项目的“切换”时,它可以工作。
但对于其他项目(动态获取“显示”属性)和 myObject(动态获取“test2”属性),仅当您切换列表的第一项时才会刷新!
在我的情况下,我希望切换立即生效。
有人解释一下吗?
new Vue({
el: "#app",
data: function() {
return {
myObject: { test: 'test' },
list: [{
value: 1,
show: true
}, {
value: 2
}, {
value: 3
}, {
value: 4
}, {
value: 5
}]
}
},
methods: {
toggleItem: function( item ) {
if( !item.show ) item.show = true;
else item.show = !item.show;
console.log(item.show)
this.myObject.test2 = 'test2';
}
},
watch: {
list: function( newValue ) {
console.log('NEW VALUE: ', newValue );
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.5/vue.js"></script>
<div id="app">
{{ myObject }}
<div v-for="item in list">
<span v-if="item.show">
{{ item.value }}
</span>
<button @click="toggleItem(item)" type="button">Toggle !</button>
</div>
</div>
【问题讨论】:
-
我认为你需要的是使用Vue.set:vuejs.org/v2/api/#Vue-set
-
非常感谢!