1

我创建了一个 Ionic 3 应用程序,将字符串存储在 Storage 中。我正在使用 SQLlite 插件,我可以看到该字符串已正确存储在页面上,因为在我 .set 值之后,我立即执行 .get 并能够验证键/值是否匹配。

this.storage.set('token', 'testing')
        .then(() => {
          this.storage.get('token')
            .then((token) => {
              console.log(token); //I get 'testing' as I should
            })
        });

当我转到 Ionic 的下一页时,我尝试从存储中检索密钥,但我得到一个空值。

在下一页上,我有以下代码:

this.platform.ready()
.then(() => {
  this.storage.get('token')
  .catch(err => {
  })
  .then((token) => {
    console.log(token); //I get null here instead of 'testing'
  });
})

在我的 app.modules.ts 文件中,我已添加import { IonicStorageModule } from '@ionic/storage';IonicStorageModule.forRoot()在导入下。

4

1 回答 1

1

this.platform.ready()返回一个 Promise,所以它只解析或拒绝一次,我怀疑你之前已经访问过这个页面set('token',所以页面被添加到堆栈中(当你访问 Ionic 中的页面时,它会将其添加到堆栈中,所以当你再次访问它时它不会'不需要再次初始化它)并且当您再次访问时,this.platform.ready()不再触发。如果您需要检查平台,您可以:

if (this.platform.is('cordova')) { }

于 2019-05-11T06:16:03.800 回答