我在AngularJS中有SPA多视图应用程序,我定义了$ interval,它是从另一个视图控制器启动的。当我单击一个名为btn的函数并插入$ interval.cancel();时;在其中,它不会停止。
以下是我的代码示例:
MainController:
$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");
}
})
}
}
此代码开始间隔并且一切都运行正常,直到我单击Logout btn为止-除了停止间隔之外,一切都可行。
任何想法如何解决?我将不胜感激。
答案 0 :(得分:0)
$ interval函数应该返回某种ID,您可以将其传递给$ interval.cancel()。例如:
var int_id = $interval( func, time )
//...later...
$interval.cancel(int_id)