使用ngIdle时未调用rootScope函数

时间:2015-05-28 16:24:35

标签: angularjs rootscope ng-idle

我正在使用ngIdle库,并且作为documentation状态,您可以调用某些方法来检查用户是否处于非活动状态,我已将这些方法放在根范围内。

app.run(function($rootScope) {
    $rootScope.$on('IdleTimeout', function() {
        alert('you will be logged out');
    });

    $rootScope.$on('IdleStart', function () {
        alert('test');
    });
});

这些函数永远不会被调用,我认为这可能与$rootscope而不是ngidle库有关。

控制台中没有任何错误,并且正确包含了ngidle库。任何想法?

2 个答案:

答案 0 :(得分:0)

对我来说ng-idle使用$rootScope可以正常工作。但我浪费了一些时间等待事件发生,直到我认识到配置需要 而不是毫秒;)

app.config(function(IdleProvider) {
    // configure Idle settings
    IdleProvider.idle(5); // in seconds!
    IdleProvider.timeout(5); // in seconds!
});

答案 1 :(得分:0)

我也花了一些时间与之斗争;没有任何事件发射。事实证明你需要调用Idle.watch()以便开始计时。

这没有很好的记录;文档是不完整的,我看到的所有例子都没有。所有看起来都像你所拥有的代码,所以在我Getting Started section on the library's GitHub page中看到之前我无法弄清楚出了什么问题。但是没有明确提到,你必须仔细观察。

.run(function(Idle){
    // start watching when the app runs. also starts the Keepalive service by default.
    Idle.watch();
});

然后第二个问题:一旦你自动注销一次,如果你再次登录而没有重新加载应用程序,它将不再是你的会话时间。您需要再次从登录方式拨打Idle.watch()reset the timers and start again