[英]Sync local storage auth token status with the views
我在angular 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
所做的更改
另外,如果可能的話,請評論一下這是否是最佳做法,或者我做錯了什么。
可以通過添加簡單的廣播來解決此問題。 在進行身份驗證的用戶工廠內部,添加
$rootScope.$broadcast 'authEvt'
並在navCtrl
使用
$rootScope.$on "authEvt",()-> $scope.is_authenticated = $window.localStorage.getItem "authFlag" return
這將在localStorage事件更改時重新加載變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.