ng-idle - это настраиваемая угловая директива, которая может быть найдена here, что позволяет вашему угловому приложению проверять, свободен ли пользователь.Доступ к переменным области видимости при использовании ng-idle
Кто-нибудь, кто использовал эту директиву, прежде чем знать, есть ли проблемы с $scope
при редактировании свойств директивы?
Вот мои JS:
// include the `ngIdle` module
var app = angular.module('demo', ['ngIdle', 'ui.bootstrap']);
app
.controller('EventsCtrl', function($scope, Idle, $modal) {
$scope.logIn = function(){
$scope.loggedIn = true;
Idle.watch();
};
$scope.logOut = function(){
$scope.loggedIn = false;
Idle.unwatch();
};
$scope.events = [];
$scope.$on('IdleStart', function() {
$scope.amIdle = true;
});
$scope.$on('IdleWarn', function(e, countdown) {
// follows after the IdleStart event, but includes a countdown until the user is considered timed out
// the countdown arg is the number of seconds remaining until then.
// you can change the title or display a warning dialog from here.
// you can let them resume their session by calling Idle.watch()
});
$scope.$on('IdleTimeout', function() {
// the user has timed out (meaning idleDuration + timeout has passed without any activity)
// this is where you'd log them
$scope.loggedIn = false;
$scope.amIdle = false;
Idle.unwatch();
console.log("Timeout has been reached");
console.log($scope.loggedIn);
});
$scope.$on('IdleEnd', function() {
// the user has come back from AFK and is doing stuff. if you are warning them, you can use this to hide the dialog
$scope.amIdle = false;
});
/*$scope.$on('Keepalive', function() {
$scope.amIdle = false;
});*/
})
.config(function(IdleProvider, KeepaliveProvider) {
// configure Idle settings
IdleProvider.idle(5); // in seconds
IdleProvider.timeout(5); // in seconds
KeepaliveProvider.interval(1); // in seconds
})
Вход/выход вещи только основной материал, который контролирует переменную LoggedIn, которая используется только с нг-шоу, чтобы иметь очень простой экран входа в систему, чтобы проверить время ожидания ng-idle. Переход в режим ожидания/обнаружение того, вернулся ли пользователь, работает очень хорошо, единственная проблема связана с функцией $scope.$on('IdleTimeout')
.
Программа переходит в консольный журнал и говорит, что оба входа в систему являются ложными, и этот тайм-аут запущен, но приложение не обновляется соответствующим образом. Когда logout является ложным, пользователь должен быть возвращен на экран входа в систему, который работает, когда пользователь нажимает кнопку выхода, но не в этом случае, когда время ожидания.