我在角度js中有两个控制器。
我面临的问题是,在两个控制器中设置令牌并检索令牌时,一切正常。
但是当我进行身份验证时,我需要重新加载页面以查看NavCtrl中的更改,因为它在呈现页面时获取值。当有login
或logout
请求相应地呈现更改时,有什么方法可以将通知传递给NavCtrl吗?
.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
,用于存储身份验证状态。基本上我想听取authFlag
如果可能的话,请评论这是最佳做法还是我做错了。
答案 0 :(得分:0)
通过添加简单的brodcast可以解决此问题。在进行身份验证的用户工厂内,添加
$rootScope.$broadcast 'authEvt'
并在navCtrl
中使用
$rootScope.$on "authEvt",()->
$scope.is_authenticated = $window.localStorage.getItem "authFlag"
return
这会在更改localStorage事件时重新加载变量。