Javascript 如何在转到另一个控制器时清除setinterval(我不想执行clearInterval(var))
目前,在我的主控制器中,我正在运行setinterval。我想当我换成另一个控制器时,间隔就结束了。但是我不想在同一个控制器上执行clearInterval()。我怎么做Javascript 如何在转到另一个控制器时清除setinterval(我不想执行clearInterval(var)),javascript,angularjs,Javascript,Angularjs,目前,在我的主控制器中,我正在运行setinterval。我想当我换成另一个控制器时,间隔就结束了。但是我不想在同一个控制器上执行clearInterval()。我怎么做 .controller('MainCtrl', function ($scope, $state) { var interval=setInterval(function(){ console.log("interval") },3000) $state.go("hom
.controller('MainCtrl', function ($scope, $state) {
var interval=setInterval(function(){
console.log("interval")
},3000)
$state.go("home");
});
这是我的代码:
您可以更改
变量间隔=
到
窗口间隔=
现在interval将是一个全局变量,可以从javascript的任何区域访问。
那你可以打电话来
clearInterval(window.interval);
在其他控制器中。建议使用Angular的
$interval
服务
$destroy
事件中的间隔
.controller('MainCtrl', function ($scope, $state, $interval) {
var interval = $interval(function() {
console.log("interval")
}, 3000)
$scope.$on('$destroy', function() {
$interval.cancel(interval)
})
$state.go("home")
})
有关更多信息,请参阅。“但我不想在同一控制器上执行clearInterval()”。您还可以指定全局var间隔,以便在其他控制器中取消它。我已经编辑了你的JSFIDLE
.controller('MainCtrl', function ($scope, $state, $interval) {
var interval = $interval(function() {
console.log("interval")
}, 3000)
$scope.$on('$destroy', function() {
$interval.cancel(interval)
})
$state.go("home")
})