AngularJS $ interval不要在.cancel()上停止;

时间:2019-03-01 13:22:46

标签: javascript angularjs html5 setinterval

我在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为止-除了停止间隔之外,一切都可行。

任何想法如何解决?我将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

var int_id = $interval( func, time )
//...later...
$interval.cancel(int_id)