2017-04-19 125 views
0

登錄後,用戶鍵入他的名字並單擊登錄名後,下一頁不顯示名稱。如果他回去並重試,那麼以後會有效。插頁在第一次加載頁面時不起作用

的HTML模板:

<ion-title>Your name is {{name}}</ion-title> 

上的分量:

name: string; 
    constructor(public navCtrl: NavController, public navParams: NavParams, private storage: Storage) { 
    this.storage.get('name').then((val) => {this.name= val;}); 
    } 
+0

什麼時候存儲在'this.storage'中?你可以添加那部分? –

+0

在上一個登錄頁面。我的意思是一切正常,除了第一次加載網站。 – user33276346

回答

0

我想你推下頁之外,那麼storage.set()部分。因爲,我無法訪問您的代碼,因此無法顯示應該如何完成。我確信這可以工作:

this.storage.set('name',"somename") 
.then((val) => { 
    console.log("Value is set to somename"); 
    this.navCtrl.push(NextPage); 
}); 

這是要在上一頁中設置存儲器中的值時完成的。

在這種情況下,確保只有在設置值時才導航到下一頁。

0

當用戶登錄時,你可以公共事件(離子事件),在您的組件,只需訂閱你定義的事件。每當事件發生時,您都可以更新您的財產。

您的應用程序無法正常工作,因爲在早期狀態下,存儲不會保留任何數據,即使您從存儲獲取數據,也沒有任何數據。

constructor(
    private events: Events, 
    private storage: Storage, 
    //... 
) { } 

login(/* params */) { 
    // after login successful, save name to storage 
    this.storage.set('name', JSON.stringify(name)) 
    .subscribe(() => { 
     this.events.publish('login:success'); 
    }); 
} 

上的分量:

name: string; 
constructor(public navCtrl: NavController, public navParams: NavParams, private storage: Storage, private events: Events) { 
    this.storage.get('name').then((val) => {this.name= val;}); 
    this.event.subscribe('login:success',() => { 
     this.storage.get('name').then((val) => {this.name= val;}); 
    }) 
    } 
} 
相關問題