您的位置:首页 > 其它

不要忘记监听$destroy事件来清除timer

2014-01-20 18:29 253 查看
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);
}
});
});


关注微信公众号:前端开发知识




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: