AngularJS - 在 n 分钟内没有检测到任何动作并进入默认状态

Posted

技术标签:

【中文标题】AngularJS - 在 n 分钟内没有检测到任何动作并进入默认状态【英文标题】:AngularJS - Detect no action for n minutes and go to default state 【发布时间】:2016-08-28 01:11:20 【问题描述】:

我是 Angular 的新手,非常感谢您的建议。我正在使用ui.router,我配置了这样的状态:

app.config(function($stateProvider, $urlRouterProvider) 
$urlRouterProvider.otherwise("/category");
$stateProvider
    .state('category', 
        url: '/category',
        templateUrl: 'category.html',
        controller: 'categoryController as catCtrl',
        reload: true
    )
    .state('category.categoryDetail', 
        url:'/:id',
        templateUrl: 'categoryDetail.html',
        controller: 'categoryDetailController as catDetailCtrl',
    )

    .state('category.categoryDetail.product', 
        url:'/product/:prod_id/:filter_model/:current_page',
        templateUrl: 'product.html',
        controller: 'productController as productCtrl'
    )

我需要设置超时功能来检查'n'分钟是否没有任何动作,然后我需要网站返回默认状态'category'。我知道我可以用jQuery 使用setTimeout() 来做到这一点,但我不确定在哪里嵌入代码。

【问题讨论】:

你在说什么动作?与后端交谈,点击屏幕的任意位置? 在你想先登陆的地方,使用$timeout(就像你使用jQuery的setTimeout一样)倒计时,当它结束时使用$location重定向用户。同时,如果发生操作,请取消超时和/或如果您需要再次进行检查则开始一个新的... 【参考方案1】:

我相信你需要ng-idle 之类的东西

【讨论】:

非常有用,但我应该在每个控制器中重复相同的代码吗?因为我需要从各个地方“观看”。 你可以和.run一起使用【参考方案2】:

您可以使用app.run

我在 plunker 中做了一个你需要的例子:https://plnkr.co/edit/aHj3XeCC83hHoCcu9Vix?p=preview

复制代码并在本地尝试,它可以正常工作。

我使用了这个答案:auto logout with angularjs based on idle user

【讨论】:

以上是关于AngularJS - 在 n 分钟内没有检测到任何动作并进入默认状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AngularJS 中将毫秒转换为分钟

Django 没有检测到 AngularJS

新型口罩可检测周边有无新冠病毒,10分钟内发出预警

AngularJS:ng-repeat 没有检测到范围的变化

在信标区域内每 10 分钟更新一次应用程序

监控每隔5分钟检测一次日志文件中是否有某个关键字