目前在我的主控制器中,我正在运行一个setinterval。我希望当我换到另一个控制器时间隔结束。但我不想在同一个控制器上执行clearInterval()。我该怎么做?
.controller('MainCtrl', function ($scope, $state) {
var interval=setInterval(function(){
console.log("interval")
},3000)
$state.go("home");
});
这是我的代码:
答案 0 :(得分:2)
建议使用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")
})
有关详细信息,请参阅https://docs.angularjs.org/api/ng/service/$interval。
答案 1 :(得分:0)
var repeater = setInterval(function () {
console.log("interval");
clearInterval(repeater);
}, 2000);
答案 2 :(得分:0)
你可以改变 var interval = 至 window.interval =
now interval将是一个可从javascript的任何区域访问的全局变量。 然后你可以打电话 clearInterval(window.interval); 在你的另一个控制器中。