在angular度,如何使用取消$用户事件的间隔,如页面更改?
关于$interval
angular度文档是这样说的:
注意:这个服务创build的间隔必须在完成时明确销毁。
但是它并没有解释如何销毁$ interval。
如果例如我有一个指令包含这个代码:
$interval(function() { for (var i in myArray) { // do domething } }, 5000);
我怎样才能销毁它,当用户更改页面例如?
每当用户改变页面时,与路由控制器相关的作用域(下面例子中的/page1
)将被发送一个$destroy
事件 。 您可以在该事件的侦听器中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); }); }