将本地存储认证令牌状态与视图同步
Sync local storage auth token status with the views
我在angular js中有两个控制器。
- NavCtrl控制导航栏并根据需要显示退出按钮
- AuthCtrl负责认证和设置本地存储
我所面临的问题是设置令牌和在两个控制器中检索相同的一切都很好。
但是当我验证时,我需要重新加载页面以查看NavCtrl中的变化,因为它在页面呈现时获取值。是否有一些方法,我可以通过通知NavCtrl时,有一个login
或logout
请求渲染相应的变化?
.controller 'AuthCtrl',($scope,User)->
$scope.login = ()->
User.auth $scope.username,$scope.password
return
return
.controller 'NavCtrl',($scope,User,$window)->
$scope.is_authenticated = $window.localStorage.getItem "authFlag"
console.log $window.localStorage.getItem "token"
console.log $window.localStorage.getItem "authFlag"
$scope.logout = ()->
User.logout()
$scope.is_authenticated = $window.localStorage.getItem "authFlag"
return
User
是我定义的factory, authFlag
是存储验证状态的bool
。基本上我想听在authFlag
如果可能的话,如果这是最佳做法,请评论,或者我做错了什么。
这个问题可以通过添加一个简单的广播来解决。在进行身份验证的用户工厂中,添加
$rootScope.$broadcast 'authEvt'
和navCtrl
中使用
$rootScope.$on "authEvt",()->
$scope.is_authenticated = $window.localStorage.getItem "authFlag"
return
这将在localStorage事件更改时重新加载变量
相关文章:
- 如何使bxslider仅在移动视图中处于活动状态
- 在UI路由器中以抽象状态填充常见视图
- 如何在具有某些 UI 视图的状态中管理工厂单个请求数据
- 如何加载嵌套3个状态的UI路由器UI视图模板
- WinJs中的视图状态更改事件在哪里
- 使用应用程序状态js和视图在angular js url上传递两个参数
- 状态更改期间角度UI路由器中的嵌套视图滞后
- ASP Web 窗体从视图状态中删除类客户端
- 在 React JS 中,什么时候应该使用存储而不是直接操作视图的状态
- 在 AngularJS 中使用不同的母版视图页进行状态
- AngularJS-在子状态中加载命名视图(非抽象)
- 嵌套状态的多个视图
- 是否可以在没有视图状态和回发的情况下使用asp.net web表单
- 更改状态时保持同级ui视图-ui路由器
- 如何在返回后将状态保持为突出显示JQuery树视图的选定节点
- AngularJS 状态提供程序视图模板
- UI 路由器不断重定向到索引,并且不加载状态/视图
- 先前的状态视图不会保留在带有自定义模态url的打开UI引导模态的后台
- UI-Router嵌套状态视图不呈现(呈现父视图)
- 在响应设计上刷新聊天应用程序伙伴的状态视图