Angular JS 作用域 Scope
Scope 作用域
是一个对象,储存应用数据模型。
作用域的层级结构对于DOM结构时相对应的
每个Angular应用只有一个root scope, 像DOM一样,子作用域有很多
Scope 生命周期
- 创建期
- 注册$watch
在模板链接阶段,指令会向作用域中注册监听器 - 数据模型变化
angular隐式地把数据模型放到$apply()中 - 数据模型变化监测
首先rootscope 进入$digest 方法,再根据各个监听表达式或者函数分发到各个作用域去,轮循检测数据模型是否发生变化,如果有变化就调用watch方法
关于$watch
脏值检测时实时监测数据的,所以一定要是高效的。值得注意的是,我们在进行脏值检测的时候一定不能
基于作用域的事件传播
作用域可以像DOM节点一样,进行事件的传播。
- broadcasted : 父作用域向子作用域广播
- emitted: 从子级作用域向父级作用域传值
这两种方式是用在html中的,不是js里,因为在$scope中已存在这两方法
<button ng-click="$emit('MyEvent')">$emit('MyEvent')</button>
<button ng-click="$broadcast('MyEvent')">$broadcast('MyEvent')</button>
我们在js中设置监听 s c o p e . scope. scope.on()
$scope.$on('MyEvent', function() {
$scope.count++;
});
这样就可以实现父子间通信