我一直试图在我的应用程序的所有页面之间传递从php api返回的数据,但无济于事。我也在这个平台上也在Google上进行了系列搜索,但都失败了。
我有以下几行代码,该代码行在登录后使用用户名通过api从mysql获取用户的详细信息。
现在,当获取用户信息时,这是一个数组,我想将该数组存储到离子本地存储中,然后从我的应用程序中的任何位置检索它。
下面是我的代码:
user.ts
"npm --prefix \"%RESOURCE_DIR %\" run lint"
我该如何处理才能从应用程序中的任何位置获取这些数据?
谢谢。
答案 0 :(得分:0)
使 saveData()如下所示
saveData(item:any) {
window.localStorage.setItem('myJsonKey', JSON.stringify(item));
}
然后,像下面一样使用它
loader.present().then(() => {
this.http.post('http://edmon.com/api/retrieve.php',data, options)
.map(res => res.json())
.subscribe(res => {
loader.dismiss()
//this.items=res.server_response;
//console.log(this.items);
this.saveData(res.server_response)
});
});
-更新-
在其他页面中make getData()函数。或者最好使服务通过存储来保存和加载项目。请参阅angular service tutorrials。
getData():Promise<any>{
return new Promise<any>((resolve,reject)=>{
window.localStorage.getItem('myJsonKey').then((item)=>{
resolve(JSON.parse(item))
}).catch((err)=>{console.log(err); reject()})
});
}
如果您熟悉async
和await
,请考虑以下简单版本。
async getData():Promise<any>{
try{
let item = await window.localStorage.getItem('myJsonKey')
return JSON.parse(item)
}catch(err){
console.log(err);
throw ''
}
}
用法
this.getData().then(...)
答案 1 :(得分:0)
这是将数据存储到vector<bool>
的时候。
localStorage
这是您想在应用程序中任何位置获取数据的时候。
//Store to storage
saveData() {
var jsonObj = this.items;
window.localStorage.setItem('myJsonKey', JSON.stringify(jsonObj));
//console.log('my itmes:', jsonObj);
}
更干净的方法是创建您自己的提供程序,并将所有用于存储管理的方法放在那儿。然后在您的ts中调用这些方法。
例如,您在提供者文件夹下的//Get from storage
getData(){
window.localStorage.getItem('myJsonKey').then( data => {
// if you want to convert it back to JSON
// create variable retData in your ts file
// retData = any;
this.retData = JSON.parse(data);
});
}
中设置方法。创建诸如user-service.ts
或setData()
之类的方法,以及它们如何工作。
然后在ts文件中,导入getData()
提供程序并调用方法。