Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Javascript 特定控制器的AngularJs stop$间隔_Javascript_Angularjs_Events_Setinterval - Fatal编程技术网

Javascript 特定控制器的AngularJs stop$间隔

Javascript 特定控制器的AngularJs stop$间隔,javascript,angularjs,events,setinterval,Javascript,Angularjs,Events,Setinterval,我使用$interval在第一个控制器中运行某些函数。重定向到第二个控制器后,仍在运行$interval注册函数(在第一个控制器中实现)。我想在不使用销毁功能的情况下停止$interval服务 必须明确销毁此服务创建的间隔 当你完成它们的时候。特别是,它们不是 当控制器的作用域或指令 元素被破坏。你应该考虑到这一点,并且 确保总是在适当的时候取消间隔。看见 下面的示例详细介绍了如何以及何时执行此操作 您可以使用cancel方法来清理$interval对象。离开控制器时,应取消间隔 为此,您需要在

我使用$interval在第一个控制器中运行某些函数。重定向到第二个控制器后,仍在运行$interval注册函数(在第一个控制器中实现)。我想在不使用销毁功能的情况下停止$interval服务

必须明确销毁此服务创建的间隔 当你完成它们的时候。特别是,它们不是 当控制器的作用域或指令 元素被破坏。你应该考虑到这一点,并且 确保总是在适当的时候取消间隔。看见 下面的示例详细介绍了如何以及何时执行此操作

您可以使用
cancel
方法来清理
$interval
对象。离开控制器时,应取消
间隔

为此,您需要在
$scope
$destroy
事件上添加
eventListener
,您可以执行清理操作(例如,取消间隔对象,取消超时对象)

代码

var myInterval = $interval(function(){
   //your interval code
}, 1000)

//register this listener inside your controller where the interval belongs.
$scope.$on('$destroy', function(){
    $interval.cancel(myInterval)
});

在rootScope中添加间隔变量。并在第二个控制器中取消它,只要它被打开,如下所示

第一控制器

$rootScope.stopInterval = $interval(function(){
   //code goes here
}, 1000);
第二控制器

$interval.cancel($rootScope.stopInterval);
注意:这种情况下唯一的缺陷是,在第一个控制器之后,您需要在所有使用的控制器中停止它,但这是一个可靠的控制器


我想在哪里使用ClearInterval?它是在第二个控制器还是第一个控制器中?在这种情况下,您应该在同一个控制器中使用上面的代码使用$rootScope,因为这是错误的代码样式。另一种方法是使用定制服务。