簡體   English   中英

將本地存儲身份驗證令牌狀態與視圖同步

[英]Sync local storage auth token status with the views

我在angular js中有兩個控制器。

  • NavCtrl可控制導航欄並根據需要顯示注銷按鈕
  • AuthCtrl負責身份驗證和設置本地存儲

我面臨的問題是,在兩個控制器中設置令牌和檢索令牌時一切正常。

但是,當我進行身份驗證時,我需要重新加載頁面以查看NavCtrl中的更改,因為在呈現頁面時它將使用該值。 當存在loginlogout請求以相應地呈現更改時,是否可以通過某種方式將通知傳遞給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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM