AngularJS $ interval不会停止.cancel();

问题描述 投票:0回答:1

我在AngularJS中有SPA多视图应用程序,我已经定义了$ interval,它是从另一个视图Controller开始的。当我点击一个带有函数的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 - 它除了停止间隔之外它做了所有事情。

任何想法如何解决它?我很感激你的建议。

javascript angularjs html5 setinterval
1个回答
0
投票

$ interval函数应返回某种ID,您可以将其传递给$ interval.cancel()。例如:

var int_id = $interval( func, time )
//...later...
$interval.cancel(int_id)
© www.soinside.com 2019 - 2024. All rights reserved.