Я использую модули ng-Idle (ngIdle) и Angular Toaster (тостер). Я хочу отобразить сообщение тостера на событии IdleWarn ng-idle со значением обратного отсчета.
$scope.$on('IdleWarn', function(e, countdown) {
console.log("Timeleft: " + countdown);
toaster.warning('Title', '<section>' + countdown + '</section>', 0, 'trustedHtml', undefined, undefined, true, undefined, undefined);
}
Это дает только тостер со статическим обратным отсчетом. Как реализовать таймер обратного отсчета для отображения счетчика с помощью этого тостера.
Мне удалось решить это, отредактировав свойство сообщения напрямую. Убедитесь, что вы используете последнюю версию углового тостера (v.2.1.1 на момент написания).
var sessionToast;
$scope.toastr = // Injected via angularJS
$scope.$on('IdleWarn', function (e, countdown) {
if (sessionToast) {
sessionToast.scope.message = countdown + ' seconds';
sessionToast.scope.$digest();
}
else {
sessionToast = self.toastr.warning(countdown + ' seconds', 'You will be logged out due to inactivity in:', {
timeOut: 0,
preventDuplicates: true,
onHidden: () => {
sessionToast = undefined;
}
});
}
});
$scope.$on('IdleEnd', function () {
$scope.toastr.clear();
});
$scope.$on('IdleTimeout', function () {
// do logout
$scope.toastr.clear();
// Maybe show a you have been logged out message.
});