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 分钟内没有检测到任何动作并进入默认状态的主要内容,如果未能解决你的问题,请参考以下文章