Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在angular中,如何对用户事件(如页面更改)使用取消$interval?_Angularjs - Fatal编程技术网

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上的示例: