Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从离子存储器获取数据的问题_Javascript_Angular_Ionic Framework_Storage_Ionic Storage - Fatal编程技术网

Javascript 从离子存储器获取数据的问题

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()

我有一个离子存储的问题。 我想在存储器中保存一个布尔值。该动作由离子开关触发。如果切换为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() {
      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;

    })
};