xiaoxiaoCNDS 2019-10-27
1.什么是MVVM?
M:(Model,模型层) 数据模型 数据是后端ajax获取到的
V :(View,视图层)需要把数据展示到页面的html中
VM:(ViewModel,视图模型 V与M连接的桥梁) View和Model是通过ViewModel来进行关联的
View改变了 通过DomListener 注册事件 视图改变了 数据就改变了
数据变化了 视图根据DataBindings发生改变(也就是数据劫持)
MVVM实现了数据双向绑定 (数据发生改变以后 VM会监测到数据的改变) 自动的通知我们的页面
进行修改 视图发生改变以后 同样的数据也会发生改变
Vue做得事情就是视图变 数据变 数据变 视图变
2.几种双向数据绑定的方式?
1.发布-订阅者模式(backbone.js) 最早的mvvm框架
一般通过pub、sub的方式来实现数据和视图的绑定 使用起来比较麻烦
2.脏值检查(angular.js)
用定时器轮训检测数据是否发生改变 性能低
3.(vue用什么方式实现的数据绑定?)
数据劫持 Object.defineProperty给对象的属性增加修饰符来劫持各个属性的setter getter(获取值和设置值的时候 你都能知道
然后就可以修改页面的视图了) 此外还结合了发布订阅模式 把所有订阅 指定 统一做更新的处理
IE8以下不支持 Object.defineProperty这个属性的 所以vue只兼容到ie9
<ListBox Name="sideMenu" SelectedIndex="{Binding MenuSelectedIndex}" ItemsSource="{Binding MenuList}