angularJS中$scope刪除監聽事件的操作

在一個controller代碼塊被釋放掉的時候,我們通常要將一些監聽的事件同時釋放掉
正常的$scope是不需要我們來維護的

但是當我們對$rootScope進行監聽的時候,類似的全局變量或者說在其他地方依然有引用的變量是不會被釋放掉的,而我們在controller中對rootScope做對應的事件監聽,比如說stateChange等,每次controller初始化都要監聽一次


刪除監聽的做法是,在rootScope.on方法上,接受它的返回值(是一個function),當scope將要destroy的時候,將返回的函數執行一邊,然後把對應的引用同時刪掉即可

類似代碼如下

var listener = $rootScope.$on('$stateChangeSuccess',function(event, toState, toParams, fromState, fromParams){
......
});
$scope.$on('$destroy',function() {
listener();
listener = null;
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章