Angular 双向数据绑定
Angular 提供双向数据绑定。
在angular Controller的$scope中声明数据模型,在模板中进行绑定。angular会自动添加DOM事件,并在$scope发生改变时自动进行DOM操作.
Angular的数据绑定特性,对于表单特别有用,可以在用户输入数据时实时提示有误或正确。
scope在Angular中代表着数据模型,它是模板表达式的上下文.
数据绑定会出现这些词,$watch,$apply,$digest, dirty checking
1、每一个双向绑定的元素都有一个$watcher;
2、在某些事件发生改变时,调用digest脏数据检查,这些事件包括:表单内容的变化,Ajax请求响应;
3、脏数据检查会检查rootscope下所有被$watch的元素。
Angular的dirty-checking机制
ng只有在指定时间触发时,才进入$dirty cycle:
DoM事件,比如用户输入文本,点击按钮(ng-click);
XHR响应事件($http)
浏览器Location变更事件($location)
Timer事件($timeout,$interval)
执行$digest和$apply
点击按钮 ng-click
会调用$apply,然后就会执行$digest循环,于是所有的$watch都会被检查。
$apply 是$scope的一个函数,调用它会强制执行一次$digest循环(除非当前正在执行循环,这种情况下会抛出一个异常)