正常的$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;
})