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中設置監聽 on()
$scope.$on('MyEvent', function() {
$scope.count++;
});
這樣就可以實現父子間通信