Javascript 从离子存储器获取数据的问题
我有一个离子存储的问题。 我想在存储器中保存一个布尔值。该动作由离子开关触发。如果切换为on=true,否则为false。所以我创建了一个服务,它可以保存和获取数据 存储服务Javascript 从离子存储器获取数据的问题,javascript,angular,ionic-framework,storage,ionic-storage,Javascript,Angular,Ionic Framework,Storage,Ionic Storage,我有一个离子存储的问题。 我想在存储器中保存一个布尔值。该动作由离子开关触发。如果切换为on=true,否则为false。所以我创建了一个服务,它可以保存和获取数据 存储服务 const ITEM_KEY = 'modal-myworkplace'; [...] async setItem(value){ const res = await this.storage.set(ITEM_KEY,value) console.log(res) } async getItem()
const ITEM_KEY = 'modal-myworkplace';
[...]
async setItem(value){
const res = await this.storage.set(ITEM_KEY,value)
console.log(res)
}
async getItem() {
await this.storage.get(ITEM_KEY).then((name) => {
console.log('The Keyvalue is: '+name)
})
}
问题是。。。
我想在组件中获取这些数据。这样地:
组件技术
let saveWorkplace: boolean;
[...]
async setData(){
await this.storage.getItem().then((name) => {
console.log("Key: "+ name)
})
}
我想从存储中获取值(true或false),然后应在saveWorkplace中定义该值
如果我将console.log这个属性记录在Component.ts中,我会得到一个未定义的对象。但是如果我在Storage.ts中记录console.log属性,我会得到一个值()
我不知道如何才能得到正确或错误的值
我希望任何人都能帮助我您的getItem()
没有返回值。将其更改为:
async getItem() {
return await this.storage.get(ITEM_KEY);
}
您需要确保跟踪您返回的内容(承诺或价值),并相应地更新代码: 服务:
setItem(value):Promise<any> {
this.storage.set(ITEM_KEY,value) // you can use .then here to check saved value.
}
getItem():Promise<any> {
return this.storage.get(ITEM_KEY);
}
现在,如果您觉得需要利用async方法并在页面初始化时(ngOnInit)读取这些值,您可以这样做:
ngOnInit() {
this.getData().then( saved => {
console.log(saved)
// the rest of init code that depends on the value;
})
};
谢谢你的帖子!不幸的是,在component.ts中有了Console.log,我现在得到了一个“ZoneAwarePromise”的输出。问题是,我需要有“真”或“假”的值,我怎样才能得到这个值?以下是我尝试的:
等待这个.storage.get(ITEM_KEY).then((res)=>{return res})代码>不幸没有成功。。。但是如果I console.log“res”,则会显示true或false。您的服务中的“this.storage”是什么?是否有任何错误?如果您在组件中正确地进行了依赖注入,这应该可以工作。谢谢!!为了让组件每次都检索到它,我在ngOnInit中添加了它。酷!是的,尽量减少使用异步存储之类的东西是一种方法!您是否知道如何实现,如何在ngOnInit中调用异步方法?不幸的是,您不能在ngOnInit中添加“wait”。在很多情况下,你需要这个。是的,让我加上它,在getData方法中添加了“return”,以及如何在ngOnInit中调用它。您还可以检查Stackoverflow以了解如何在ngOnInit中调用异步方法的答案,并且您可以在ngOnInit前面添加“async”并等待。
ngOnInit() {
this.getData().then( saved => {
console.log(saved)
// the rest of init code that depends on the value;
})
};