2017-04-19 124 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;}); 
    }) 
    } 
} 
相关问题