TypeError: Не удается прочитать свойство 'watch' undefined в angularjs ng-idle? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь записать проблему времени ожидания в элементе управления входом в систему, но получаю свойство not read 'watch' из undefined.

Я пытаюсь выполнить следующий код в Tomcat Server 7 и Angular. 1.5

$scope.started = false;

function closeModals() {

    alert(1);
    if ($scope.warning) {
        $scope.warning.close();
        $scope.warning = null;
    }

    if ($scope.timedout) {
        $scope.timedout.close();
        $scope.timedout = null;
    }
}

$scope.$on('IdleStart', function() {
    closeModals();

    $scope.warning = $modal.open({
        templateUrl: 'warning-dialog.html',
        windowClass: 'modal-warning'
    });
});

$scope.$on('IdleEnd', function() {
    closeModals();
});

$scope.$on('IdleTimeout', function() {
    closeModals();
    $scope.timedout = $modal.open({
        templateUrl: 'timedout-dialog.html',
        windowClass: 'modal-danger'
    });
});

$scope.start = function() {
    console.log('start');
    closeModals();
    Idle.watch();
    $scope.started = true;
    alert("Hi")
};

$scope.stop = function() {
    console.log('stop');
    closeModals();
    Idle.unwatch();
    $scope.started = false;
};

nuncasApp.config(function(IdleProvider, KeepaliveProvider) {
    alert(3);
    IdleProvider.idle(5);
    IdleProvider.timeout(5);
    KeepaliveProvider.interval(10);
    IdleProvider.interrupt('keydown wheel mousedown touchstart touchmove scroll');
}); 

Я получаю код от https://jsfiddle.net/esoyke/fkqLqy7c/.

Я получаю следующую ошибку:

angular.js:13920 TypeError: Cannot read property 'watch' of undefined at b.$scope.start (loginCtrl.js:141)
at b.$scope.validateUser (loginCtrl.js:18)
at fn (eval at compile (angular.js:14817), <anonymous>:2:227) at b (angular.js:15906)
at e (angular.js:25885)
at b.$eval (angular.js:17682)
at b.$apply (angular.js:17782)
at HTMLButtonElement.<anonymous> (angular.js:25890)
at Sf (angular.js:3497)
at HTMLButtonElement.d (angular.js:3485)

1 Ответ

0 голосов
/ 12 ноября 2019

Пожалуйста, подтвердите, что эта зависимость правильно введена, как в var myApp = angular.module("myApp", ['ngIdle']), и в вашем контроллере, как в app.controller('DemoCtrl', function($scope, Idle /*other injections*/).

...