angularjs会广播一个$destroy的事件在销毁scope和其父对象被删除时。
在做一些清除的任务或资源的时候,监听这个事件就变得非常的关键,否则就可能消耗内存和CUP.
下面是一个有问题的情况:
module.controller("TestController", function($scope, $timeout) {
var onTimeout = function() {
$scope.value += 1;
$timeout(onTimeout, 1000);
};
$timeout(onTimeout, 1000);
$scope.value = 0;
});
下面是正确的情况:
module.controller("TestController", function($scope, $timeout) {
var onTimeout = function() {
$scope.value += 1;
timer = $timeout(onTimeout, 1000);
};
var timer = $timeout(onTimeout, 1000);
$scope.value = 0;
$scope.$on("$destroy", function() {
if (timer) {
$timeout.cancel(timer);
}
});
});
关注微信公众号:前端开发知识