停止角活动监视器(Sean3z)



有人知道如何正确订阅活动监视吗?我一直在GitHub页面上尝试笔记,但无济于事。我正在尝试关闭用户从Web应用程序登录时关闭监视。

http://sean3z.github.io/angular-activity-monitor/

    service.stopActivityMonitor = function() {
        // Trying to trigger this UNSUBSCRIBE when LOGOUT is CLICKED
        ActivityMonitor.off('inactive', function() {
            <Function process for app LOGOUT>
        });
    };
    service.startActivityMonitor = function() {
        ActivityMonitor.on('inactive', function() {
            // User is considered inactive
            <Sign Off Sequence when user is INACTIVE>
            // if session expires on dash stop time
            $mdDialog.show({
                locals: {dataToPass: vm},
                controller: SessionController,
                controllerAs: 'vm',
                templateUrl: '/components/login/session.expire.dialog.html',
                parent: angular.element(document.body),
                clickOutsideToClose: false
            });
            $state.go('home');
        });
        ActivityMonitor.on('keepAlive', function() {
            <Function to keep session OPEN>
        });
        ActivityMonitor.on('warning', function() {
            $mdDialog.show({
                locals: {dataToPass: vm},
                controller: SessionController,
                controllerAs: 'vm',
                templateUrl: '/components/login/session.inactive.dialog.html',
                parent: angular.element(document.body),
                clickOutsideToClose: false
            });
        });
    };

这有帮助吗?

希望我可以提供一些洞察力作为此模块的原始创建者:)

有几种停止活动监视器的方法,但是,不建议您手动配置ActivityMonitor.options.enabled属性,因为它实际上并未注册DOM侦听器或清除不活动检查。在从技术上设置属性的同时,走这条路线本质上可以使服务保持活力并寻找用户活动,但是,由于(放置良好的)检查enabled属性。

如果您确实需要停止/取消订阅,请考虑以下路线:

使用ActivityMonitor.disable()

很抱歉目前似乎没有证明这一点,但是disable()是停用整个服务的首选方法。这将取消注册DOM侦听器,清除所有不活动超时,并将服务标记为禁用。

如果您只想删除单个事件(并保持其他事件活动/活跃),则需要使用下面的方法。

(UN)订阅和事件命名

我注意到您的示例:

ActivityMonitor.off('inactive', function() {
  <Function process for app LOGOUT> /* this is incorrect */
});

为了取消订阅单个事件,您实际上有三个选项:

  • 通过相同回调参数到.unbind().off()
  • 使用事件命名间订阅并取消订阅。
  • 退订特定事件的所有回调

相同的回调示例

var foo = function() {
  alert("y0, you're inactive!");
};
ActivityMonitor.on('inactive', foo); /* subscribe */
ActivityMonitor.off('inactive', foo); /* unsubscribe */

事件名称空间示例

我们可以命名事件并使用此功能来轻松解开我们的操作,而不是维持对回调的引用以解开回调。命名空间是通过使用段(。)字符绑定到事件时定义的:

ActivityMonitor.on('inactive.myEvent', function foo() {
  alert("y0, you're inactive!");
});
ActivityMonitor.off('inactive.myEvent');

退订所有示例

如果要删除inactivity事件(或其他)的所有回调,则只需在没有第二个参数的情况下通过事件即可。

ActivityMonitor.off('inactive');

所以,我需要更清楚自己的问题。当用户单击"注销"按钮时,我想结束活动监视器会话。取消订阅不是我需要完成的!

我的解决方案是将属性启用设置为false,以在用户登录后停止活动监视器继续进行。这是我的代码:

    service.endInactivityCheck = function() {
        ActivityMonitor.options.enabled = false;
    };

我为混乱表示歉意。谢谢!

最新更新