2017-05-07 92 views
0

我有一個本地存儲變量來存儲當前認證遊戲的數據。這是我的應用程序的結構。本地存儲問題 - 角2

打開遊戲

我有具有存儲在桌上游戲列表的表稱爲OpenGames。現在,當我點擊表中的任何遊戲(戒指)時,它會進行身份驗證,並且已驗證的遊戲名稱將存儲在本地存儲變量中並路由到顯示頁面(例如:顯示遊戲頁面)當前存儲的名稱存儲在本地存儲中。

在第一個例子中,我認識到顯示遊戲頁面上顯示的是經過驗證的遊戲,但是當我回到OpenGames表來驗證另一個遊戲(Spiderman)時,本地存儲仍然保留了第一個遊戲我認證。在本地存儲將存儲蜘蛛俠之前,我將不得不重新驗證蜘蛛俠。

檢查記錄的控制檯,當我對遊戲進行身份驗證時,顯示遊戲頁面上的本地存儲顯示舊的存儲值,然後顯示新的已驗證遊戲的詳細信息。

我現在的問題是:如何確保在本地存儲保存認證遊戲之前進行認證?

驗證

constructor(private httpService: Http) { 
    let currentGame = JSON.parse(localStorage.getItem('currentGame'));  
} 

authGame(game: string): Observable<boolean> { 
    return this.http.post('http://localhost:9000/example.com',({game: game })) 
      .map((response: Response) => { 

     let game_name:string = response && response.json().game.name; 

     if (game_name) { 
      // store name in variable 
      this.game_name = game_name; 

      localStorage.setItem('currentGame', JSON.stringify({game_name:game_name }) 

      console('Current Game is ' +game_name) 
      return true; 
     } else { 
      return false; 
     } 

    });  

} 

顯示遊戲頁面

constructor(private auth:AuthGame){ 
    this.currentGame = JSON.parse(localStorage.getItem('currentGame'));  
    this.currentGame.game_name); 
    console('Current Game is ' currentGame.game_name) 
} 

更新驗證

constructor(private httpService: Http) { 

    let currentGame = JSON.parse(localStorage.getItem('currentGame')); 
} 

authGame(game: string): Observable<boolean> { 
    return this.http.post('http://localhost:9000/example.com',({game: game })) 
      .map((response: Response) => {   
     let game_name:string = response && response.json().game.name; 

     if (game_name) { 
      // store name in variable 
      this.game_name = game_name; 
      if(localStorage.getItem('currentGame')) { 
       localstorage.removeItem('currentGame'); 
       localStorage.setItem('currentGame', JSON.stringify({game_name:game_name })) 
       console('Current Game is ' +game_name) 
      } 
      return true; 

     } else { 
      return false; 
     } 

    }); 

} 
+0

設置本地存儲之前檢查它是否已經設置,如果它已經設置,然後刪除本地存儲並將新值設置爲本地存儲 –

+0

@ArunKumaresh我真的可以與您的聲明相關。如果你可以更加解釋。但是如果我明白你的意思,當我從顯示遊戲頁面返回到開放遊戲桌以驗證另一個遊戲時,當我刪除本地存儲時,應用程序將拋出一個錯誤,指出自顯示遊戲以來'currentGame爲null'頁面打開之前認證 – XamarinDevil

+0

你可以添加你試過的代碼 –

回答

0
if(localStorage.getItem('currentGame')) 
{ 
localStorage.removeItem('currentGame'); 
     localStorage.setItem('currentGame', JSON.stringify({game_name:game_name }))      

} 
+0

哪個組件?我的顯示頁面?與ngDestroy? – XamarinDevil

+0

否您在設置本地存儲的組件中 –

+0

您的意思是在我的Auth組件中? – XamarinDevil