1.vue由于javascript的限制,对象属性的增加和删除,不能及时更新视图view
因为若一个对象的属性没有在data中声明,则他就不是响应式的。由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,这样的话这个对象属性就是响应式的。而执行这个过程必须在data中声明才会有。
var vm = new Vue({
data:{
a:1// vm.a 是响应的
}
})
vm.b = 2;// vm.b 是非响应的
可以用set来解决这个问题
Vue.set(vm.someObject, 'b', 2);
//或者
this.$set(this.someObject,'b',2);
- 由于 JavaScript 的限制, Vue 不能检测以下变动的数组
vm.items[indexOfItem] = newValue;
解决---->
Vue.set(vm.items,indexOfItem,newValue) / vm.items.splice(indexOfItem, 1 , newValue)
vm.items.length = newLength;
解决---->
vm.items.splice(newLength)
本文解析了Vue.js中响应式机制的工作原理,特别是针对对象属性的动态增删操作及数组变动时如何确保视图同步更新的方法。介绍了使用Vue.set或this.$set解决新增属性响应性问题,以及处理数组变化的正确方式。
1037

被折叠的 条评论
为什么被折叠?



