【问题标题】:Ionic 3 Storage TimingIonic 3 存储时间
【发布时间】:2018-03-10 05:23:08
【问题描述】:

我正在从存储中加载一些 json,并打算在页面 html 模板中显示信息。但是,当我这样做时,在进入页面时出现错误,暗示信息(尚)不可用。

我可能误解了这个概念,但是否可以对离子存储进行同步调用而不是异步调用?我基本上想检查配置文件是否存储在设备上,如果没有 -> 推回登录屏幕。但显然,对 ionic storage 的调用耗时过长,并且在页面加载时尚未解决。

page.ts

private user:User;
constructor(private storage: Storage) {   
    storage.get('user').then(data => {
      this.user = data;
    });
  }

page.html

<ion-content padding>
  <div>
    <p>Welcome <b>{{user.name}}</b></p>    
  </div>
</ion-content>

正如我所说,这会给我 user.name 未定义的错误。 当使用 ngif 指令等待承诺被解决时,它可以工作。 但我想我在这里误解了这个概念。

<ion-content padding>
  <div *ngIf="user">
    <p>Welcome <b>{{user.name}}</b></p>    
  </div>
</ion-content>

那么如何调用 Ionic Storage 并在页面加载/进入时获取数据?

【问题讨论】:

    标签: javascript angularjs typescript ionic-framework


    【解决方案1】:

    可能误解了这个概念,但有可能制作一个 同步调用离子存储而不是异步存储?

    这是一个异步操作,我认为您不能以同步方式执行此操作。 无论哪种方式,您使用 *ngIf="user" 的解决方案都是一个很好的解决方案,您还可以添加类似

      <div *ngIf="!user">
         //Load a spinner, or a loading bar
      </div>
    

    【讨论】:

      【解决方案2】:

      只是因为从存储中获取用户需要一些时间。

      另一个避免没有 *ng-if 的错误的建议:

      private user:User = new User(); // Initialize the user property
      
      constructor(private storage: Storage) {   
          storage.get('user').then(data => {
              this.user = Object.assign(new User, data);
          });
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-23
        • 1970-01-01
        • 2018-03-19
        • 2018-01-05
        • 2018-06-14
        • 1970-01-01
        相关资源
        最近更新 更多