2016-12-03 54 views
1

我有这个样本登录页面,我试图将存储数据(用户数据)的返回对象到存储,所以我可以得到它并在其他页面中使用它...因为数据是以json Object(array)的形式...我不知道这是如何完成的,我试图将其串化,但有些错误!设置和获取对象从存储在离子2

login.ts:

@Component({ 
     selector: 'page-login', 
     templateUrl: 'login.html' 
     }) 
      export class LoginPage { 

      login: {username?: string , password?: string} = {}; 
      submitted = false; 
      loginDetails: any; 



      constructor(public navCtrl: NavController, private schoolAppUsers: SchoolAppUsers, 
      public userData: UserData, public storage: Storage, public globalService: GlobalService) { 

      this.globalService=globalService; 
      this.schoolAppUsers=schoolAppUsers; 
      this.userData=userData; 
     } 

      onLogin(form) { 

      this.submitted = true; 

      if (form.valid) { 

       this.schoolAppUsers.login(this.login) 
      .then(loginDetails => { 

       this.loginDetails = loginDetails; 
       this.navCtrl.setRoot(TabsPage); 
       // console.log(loginDetails); 
      }); 

       this.userData.login(this.login.username); 
       this.userData.loginDetails(this.loginDetails); 

     } 
    } 
} 

当我的控制台日志://console.log(loginDetails);这是输出(对象): [{“error”:“false”,“UserID”:1,“name”:“yasir”,“username”:“yasir12”,“password”:“123”角色“:1}]

所以我试图通过它:this.userData.loginDetails(this.loginDetails);

userData.ts:

@Injectable() 
    export class UserData { 
    constructor(public events: Events, public storage: Storage) {} 

     loginDetails(loginDetails) { 
      this.setLoginDetails(loginDetails); 
     }; 

    setLoginDetails(loginDetails) { 
     this.storage.set('loginDetails', JSON.stringify(loginDetails)); 
     }; 

    getLoginDetails() { 
     return this.storage.get('loginDetails').then((value) => { 
     return value && JSON.parse(value); 
     }); 
    }; 

我这是如何试图在其他页面,这时候我控制台登录其返回“空”或“不确定”

loginDetails: any; 

ngAfterViewInit() { 
    this.getUserdetails(); 
} 

getUserdetails() { 
    this.userData.getLoginDetails().then((loginDetails) => { 
    this.loginDetails = loginDetails; 
    console.log(this.loginDetails); 
    }); 
} 
可以

有人拿到请帮忙!

+0

这里同样也是因为这个 –

+0

我不知道任何更新,即时插得太深,甚至在离子2论坛,没有人回答 –

回答

2
if (form.valid) { 

      this.schoolAppUsers.login(this.login) 
     .then(loginDetails => { 

      this.loginDetails = loginDetails; 
      this.navCtrl.setRoot(TabsPage); 
      // console.log(loginDetails); 
     }); 

      this.userData.login(this.login.username); 
      this.userData.loginDetails(this.loginDetails); 

    } 

这就是问题所在。你的promise.then()是异步的。 甚至在它设置在this.loginDetails之前,您正试图保存userData中的loginDetails。 你应该这样做:

this.userData.loginDetails(this.loginDetails); 

里面的登录方法。

UPDATE 变化

return value && JSON.parse(value); 

return value || JSON.parse(value); 
+0

我还是得到了一个未定义 –

+0

其实这次我得到[对象对象],在哪里接近我认为 –

+0

在getUserdetails()输出屏幕上是[对象对象] 但在它下面console.log 我得到undefined –