angularJS 双向绑定原理
AngularJS 在scope 上有一个监听队列($$watchers),只要使用了ng-* 指令或者{ {…}}引用了scope上的变量,就会创建对应的监听器($watch),用于监听数据的变化并更新view。当浏览器接收到可以被 angular context 处理的事件时,$digest 循环就会触发。$digest 会遍历所有的 $watch。从而更新DOM。
创建监听器的方法
- 通过ng-*指令或者{ {…}}引用scope上的变量
- 通过scope上的$watch方法手动创建监听器
$watch API
$watch(watchExpression, listener, [objectEquality]);
- watchExpression(监听的对象):字符串表达式或者一个function
- listener(监听到上述的表达式的结果发生变化时触发的回调函数):function(newVal, oldVal, scope)
- objectEquality(选填的参数,判断对listener中的newVa和oldVal是否使用 angular.equals进行比较):true/false
监听器详解
默认的监听器
<div ng-app="myApp" ng-con