$interval
的
注意:完成后,必须明确销毁此服务创建的间隔。
但它没有解释如何破坏$ interval。
例如,如果我有一个包含此代码的指令:
$interval(function() {
for (var i in myArray) {
// do domething
}
}, 5000);
当用户更改页面时,如何销毁它?
答案 0 :(得分:80)
每当用户更改页面时,与路由控制器关联的范围(以下示例中为/page1
)将发送a $destroy
event。您可以cancel
在该事件的监听者中$interval
:
app.config(function ($routeProvider) {
$routeProvider.when('/page1', {
template: '<div>Page Content</div>',
controller: PageController
});
// ...
});
function PageController($scope, $interval) {
var intervalPromise = $interval(function () { /* ... */ }, 5000);
$scope.$on('$destroy', function () { $interval.cancel(intervalPromise); });
}