## angularJS中$scope刪除監聽事件的操作
在一個`controller`代碼塊被釋放掉的時候,我們通常要將一些監聽的事件同時釋放掉
正常的`$scope`是不需要我們來維護的
但是當我們對`$rootScope`進行監聽的時候,類似的全局變量或者說在其他地方依然有引用的變量是不會被釋放掉的,而我們在controller中對`$rootScope`做對應的事件監聽,比如說`stateChange`等,每次`controller`初始化都要監聽一次。
刪除監聽的做法是,在`$rootScope.on`方法上,接受它的返回值(是一個function),當`scope`將要`destroy`的時候,將返回的函數執行一邊,然后把對應的引用同時刪掉即可
類似代碼如下:
```js
var listener = $rootScope.$on('$stateChangeSuccess',function(event, toState, toParams, fromState, fromParams){
......
});
$scope.$on('$destroy',function() {
listener();
listener = null;
})
```
- 步入JavaScript的世界
- 二進制運算
- JavaScript 的版本是怎么回事?
- JavaScript和DOM的產生與發展
- DOM事件處理
- js的并行加載與順序執行
- 正則表達式
- 當遇上this時
- Javascript中apply、call、bind
- JavaScript的編譯過程與運行機制
- 執行上下文(Execution Context)
- javascript 作用域
- 分組中的函數表達式
- JS之constructor屬性
- Javascript 按位取反運算符 (~)
- EvenLoop 事件循環
- 異步編程
- JavaScript的九個思維導圖
- JavaScript奇淫技巧
- JavaScript:shim和polyfill
- ===值得關注的庫===
- ==文章==
- JavaScript框架
- Angular 1.x
- 啟動引導過程
- $scope作用域
- $q與promise
- ngRoute 和 ui-router
- 雙向數據綁定
- 規范和性能優化
- 自定義指令
- Angular 事件
- lodash
- Test