なじみのない方のために説明すると、ngIdle はここにあります。
これは基本的に、多くの銀行がAngularを使用してWebサイトで行っているように、アイドルタイムアウトを作成する方法です.
それはうまく機能しますが、私が現在使用している方法は、コントローラーにいくつかの構成要素を配置することです。問題は、私は複数のコントローラーを使用していて、プロジェクト全体でこの構成をコピーして貼り付けたくないということです。
構成は次のようになります。
function closeModals()
{
// Function closes any modals that are currently open (used when coming back from idle)
if ($scope.warning) {
$scope.warning.close();
$scope.warning = null;
}
if ($scope.timedout) {
$scope.timedout.close();
$scope.timedout = null;
}
}
$scope.$on('IdleStart', function () { // What happens when the user goes idle (idle time is defined in app.js IdleProvider config)
closeModals();
$scope.warning = $modal.open({
templateUrl: 'views/timeoutModal.html',
windowClass: 'modal-danger'
});
});
$scope.$on('IdleTimeout', function () { // This is what happens when the user waits passed the warning timer
logout();
closeModals();
Idle.unwatch();
$scope.$apply();
alert("You have been signed out due to inactivity.");
});
$scope.$on('IdleEnd', function () { // What happens when the user comes back from being idle but before they are timed out
closeModals();
$scope.amIdle = false;
});
基本的に、これらの構成設定を使用したいことをコントローラーに簡単に伝えることができ、それらをコントローラーに入れる必要なく使用できるようにしたいと考えています。