Интервал AngularJS $ не останавливается на .cancel (); - PullRequest
0 голосов
/ 01 марта 2019

У меня есть приложение SPA с несколькими представлениями в AngularJS, я определил $ интервал, который запускается из другого контроллера представления.Когда я щелкаю 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");
            }
        })
    }
}

Этот интервал запуска кода и everithing работает нормально, до того момента, пока я не нажму Logout btn - он сделал everithing, кроме остановки интервала.

Есть идеи, как это исправить?Буду благодарен за совет.

1 Ответ

0 голосов
/ 01 марта 2019

Функция $ interval должна возвращать какой-то идентификатор, который вы можете передать в $ interval.cancel ().Например:

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