2016-09-23 47 views
0

我有有一些directives-AngularJS註銷並重新登錄

<div ng-if="$hide"> 
     <ba-sidebar></ba-sidebar> 
     <page-top></page-top> 

     <div class="al-main"> 
      <div class="al-content"> 
      <content-top></content-top> 
      <div ui-view></div> 
      </div> 
     </div> 
    </div> 
    <div ng-if="!$hide"> 
     <login-view></login-view> 
    </div> 

這樣做是它顯示的內容,如果用戶成功登錄。在IS-

的日誌記錄代碼的索引文件
$interval(function(){ 
    var token = $cookies.get('token'); 
    if(token === undefined){ 
     $rootScope.$hide = false; 
    } 
    else{ 
     $rootScope.$hide = true; 
    } 
}, 300) 

interval函數檢查從後端(django)發送的令牌的cookies並切換視圖。如果有令牌,則顯示主要內容,如果不是,則加載登錄指令。

要註銷,我所做的是刪除這些cookie並將它們設置爲空,這會自動將視圖更改回登錄指令。

註銷後,頁面切換到登錄狀態。

問題 -

當我嘗試登錄使用不同的用戶,在後端,用戶被切換,但只要視圖改變爲主要內容,它加載了數據從前一個用戶開始,直到整個頁面刷新(手​​動)。

  • 我似乎不明白爲什麼ng-if重新創建整個DOM,它不應該加載新的數據嗎?
  • 如果沒有,如何加載新的數據?

回答

1

就我所見,問題不在於ng-if。清除令牌時,還應清除用於填充DOM的用戶對象。現在有兩個依賴關係 - Cookie和用戶對象。

當您刪除令牌時,請確保清除該用戶對象。如果ng-if僅取決於您的令牌,這意味着在您的登錄和用戶對象的人口之間的差距期間,舊的用戶對象仍然有效,並且$hide將爲假,從而顯示您的舊用戶數據

+0

I對不起,你在談論哪個用戶對象?當我刪除令牌時,我清空憑證變量。 – ThatBird

+0

讓我問你這個 - 你如何在屏幕上顯示用戶數據? – nikjohn