Angularjs 在angular中,如何对用户事件(如页面更改)使用取消$interval?
关于Angularjs 在angular中,如何对用户事件(如页面更改)使用取消$interval?,angularjs,Angularjs,关于$interval的意思是: 注意:此服务创建的间隔必须在完成时明确销毁 但它并没有解释如何破坏$interval 例如,如果我有一个包含此代码的指令: $interval(function() { for (var i in myArray) { // do domething } }, 5000); 例如,当用户更改页面时,我如何销毁它 每当用户更改页面时,将发送与路由控制器关联的作用域(/page1,在下面的示例中)。您可以在该事件的侦听器中取消该$i
$interval
的意思是:
注意:此服务创建的间隔必须在完成时明确销毁
但它并没有解释如何破坏$interval
例如,如果我有一个包含此代码的指令:
$interval(function() {
for (var i in myArray) {
// do domething
}
}, 5000);
例如,当用户更改页面时,我如何销毁它 每当用户更改页面时,将发送与路由控制器关联的作用域(
/page1
,在下面的示例中)。您可以在该事件的侦听器中取消该$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); });
}
app.config(函数($routeProvider){
$routeProvider.when(“/page1”{
模板:“页面内容”,
控制器:页面控制器
});
// ...
});
函数PageController($scope,$interval){
var intervalPromise=$interval(函数(){/*…*/},5000);
$scope.$on(“$destroy”,函数(){$interval.cancel(intervalPromise);});
}
当作用域更改为子作用域时,如果要取消/暂停$interval,该怎么办?不会调用('$destroy',…)上的$scope.$on。@CaioOliveira我不太明白您所说的“更改为子作用域”是什么意思?是否要在创建任何子作用域后立即取消$interval?如果是这样,我看不到用例。你在想什么样的场景?我只是认为说“每当用户更改页面时”是错误的。可以在不破坏作用域的情况下更改页面,就像创建子作用域一样。我有一个类似的场景:我需要父作用域保持活动状态,但在更改到此子作用域时必须暂停一段时间。当然,我可以在创建子范围的地方暂停,但我认为这是一种丑陋的处理方式(你可以忘记在某个地方暂停)。我找不到解决办法。我对Angular非常陌生,所以可能我做了一些不符合其理念的事情。@CaioOliveira,我遇到了一个情况,在成功的$http
调用时,我会设置一个新的$interval来获取新数据。(保持数据新鲜)。但是,如果在更改$state
后触发$http
请求,则计时器将重新初始化,其“显示”好像$interval未被$destroy
'ed。Plnkr.co上的示例: