深入响应式原理
Vue 最显著的特性之一是响应式系统(reativity system)。
模型层(model)只是普通的JavaScript 对象,修改它则更新视图(view)。
每个组件实例都有相应的watcher 实例对象,它会在组件渲染的过程中把属性记录为依赖,之后当依赖项的setter 被调用时,会通知watcher 重新计算,从而致使它关联的组件得以更新。
注:Vue 不支持IE8 以及更低版本浏览器

变化检测问题
Vue 不能检测到对象属性和添加或删除。
由于Vue 会在初始化实例时对属性执行getter/setter 转化过程,所以属性必须在data 对象上存在才能让Vue 转化它。这样才能让它是相应的。
1 <script> 2 var vm= new Vue({ 3 data:{ 4 a:1 5 } 6 }) 7 // vm.a 是响应的 8 vm.b=2 9 //vm.b 是非相应的 10 </script>
Vue 不允许在已创建的实例上动态添加新的根级响应式属性(root-level reactive property)。
然而使用Vue.set(object, key, value) 方法将相应属性添加到嵌套对象上。
1 var vm=new Vue({ 2 el:'#example', 3 data:{ 4 a:'b', 5 b:[1,'b',3,4] 6 } 7 }) 8 Vue.set(vm.b,1,10) 9 vm.$set(vm.b,5,11)

浙公网安备 33010602011771号