【发布时间】:2019-07-23 13:01:01
【问题描述】:
我在 AngularJS 中有 SPA 多视图应用程序,我定义了从另一个视图控制器启动的 $interval。当我单击带有调用函数的 btn 和行 $interval.cancel();在里面,它不会停止。
以下是我的代码示例:
主控制器:
$scope.$on("startInterval", function () {
$interval(function warningsControl() {
console.log("Timer stamp!");
$.ajax({
// some web api call which works fine
})
}, 10000);
});
$scope.stop = function () {
$interval.cancel();
}
$scope.logoutButton = {
text: "Logout",
type: "normal",
visible: false,
onClick: function () {
// some working code
$scope.stop();
var logoutBtn = $("#logout-btn").dxButton("instance");
logoutBtn.option({
visible: false
});
}
}
还有 SecondController:
$scope.authenticateButton = {
type: "default",
text: "Log In",
onClick: function () {
$.ajax({
// some web api calling
success: (data) => {
// some working code
$rootScope.$broadcast("startInterval");
}
})
}
}
此代码开始间隔,一切运行正常,直到我点击注销 btn - 除了停止间隔之外,它完成了一切。
任何想法如何解决它?我将不胜感激。
【问题讨论】:
-
我之前看过它,我发现 $interval.cancel() 行用于停止间隔,但它在我的代码中不起作用,我在那里找不到我的问题的任何答案。
-
从linked dupe中的答案来看,需要存储区间并传递给
cancel()。 “不起作用”没有帮助;您是否在控制台中收到任何错误消息? -
控制台没有错误(除了那些,程序在没有登录用户的情况下调用服务器 - $interval 仍在运行但它不应该)。但多亏了 Quantum 的回答,我成功了。
标签: javascript angularjs html setinterval