最近学习Vue2, 遇到2个问题:
1.data的属性是对象, 通过赋值直接设置对象的属性值, 原本不应该视图更新的, 但是如果设置data另一个属性的值, 导致视图更新, 同时会导致这个对象的视图更新.
<div id="app">
<div>
{{message}}
</div>
<div>
{{object.name}}
</div>
</div>
var vm = new Vue({
el: "#app",
data(){
return {
message: "message初始值",
object: {}
}
}
});
// vm.$set(vm.object, "name", "通过set设置object的属性的值");
// 通过赋值, 直接设置属性值, 页面视图没有更新
vm.object.name = "设置object的属性的值";
// 取消注释这句话, 会触发上面这句话的视图更新!
//vm.message = "设置message的值";
// vm.$forceUpdate();
2.setTimeout里面, 即使通过Vue.set没有视图更新
<div id="app">
<div>
{{message}}
</div>
<div>
{{object.name}}
</div>
</div>
var vm = new Vue({
el: "#app",
data(){
return {
message: "message初始值",
object: {}
}
}
});
// 如果取消注释这个, 那setTimeout里面的视图会更新
// vm.$set(vm.object, "name", "设置object的属性的值");
vm.object.name = "不通过set, 设置object的属性的值";
setTimeout(function(){
// 页面视图没有更新
vm.$set(vm.object, "name", "通过set设置object的属性的值");
// vm.$forceUpdate();
}, 500);
不知描述的是否清晰, 请帮忙看看(没百度到), 感激!
相关分类