0
我有两个角度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
是工厂,我所定义和authFlag
是bool
存储在auth状态。基本上我想听听authFlag
此外,如果可能请评论,如果这是最佳做法或我做错了。
我认为你应该使用路由器来切换用于每种情况的视图(/ login和/ main - after/login)。导航栏只能在/登录后立即加载 –
@VuQuyet导航栏是相同的模板仪表板和登录页面。我也尝试过使用$ location.path,但即使这样做不起作用,我得到一个顶部带有登录按钮的仪表板。只有当我重新加载应用程序,我得到注销按钮。我在网上找到的最佳方式是使用活动:) – georoot