【问题标题】:Native Storage Error, does not display the following screen本机存储错误,不显示以下屏幕
【发布时间】:2018-02-01 09:36:09
【问题描述】:

我正在尝试实现登录。

其中有 2 个选项可以使用您在 FB 中的数据注册一个或另一个手动输入。

在您与 fb 建立联系的第一种形式中,他会带上您的姓名和邮件,然后将您发送到下一个窗口,您必须在其中输入您的电话号码

在 resgitro 的第二个选项中,您给出了现在注册的位置,它会将您带到同一页面,该页面仅在这次带有空字段的情况下从上方带您。

当我给出第二个选项时出现错误,我收到以下错误并且不显示屏幕:

它告诉我它是空的然后我的疑问是以下,因为当它到达空时它显示正常屏幕

这是我用 facebook 登录的代码:

loginWithFB() {
    let nav = this.navCtrl;
    let env = this;
    this.facebook.login(['email', 'public_profile']).then((response: FacebookLoginResponse) => {
      this.facebook.api('me?fields=id,name,email,first_name,picture.width(720).height(720).as(picture_large)', [])
        .then(function (user) {
          env.nativeStorage.setItem('user',
            {
              name: user.name,
              email: user.email
            })
            .then(function () {
              nav.push(RegistroNPage);
              //console.log(user);
            }, function (error) {
              console.log(error);
            })
        })
    });
  }

也许上这个班是个错误:

ionViewCanEnter() {
        console.log('Ya llegue');
        let env = this;
        return this.nativeStorage.getItem('user')
            .then(function (data) {
                env.user = {
                    name: data.name,
                    email: data.email
                };
                console.log(env.user);
                env.userReady = true;
                return true;
            }, function (error) {
                console.log(error);
                return false;
            });
    }

这是我的注册页面中的 html,其中 2 个按钮到达:

<ion-content padding class="body" align="center">
    <img src="assets/logito.png">
    <br>
    <br>

    <ion-list *ngIf="userReady">
        <ion-item>
            <ion-label>
                <ion-icon name="person"></ion-icon>
            </ion-label>
            <ion-input type="text" placeholder="Nombres" [(ngModel)]="user.name">
            </ion-input>
        </ion-item>
        <ion-item>
            <ion-label>
                <ion-icon name="mail"></ion-icon>
            </ion-label>
            <ion-input type="text" placeholder="Nombres" [(ngModel)]="user.email">
            </ion-input>
        </ion-item>
        <ion-item>
            <ion-label>
                <ion-icon name="call"></ion-icon>
            </ion-label>
            <ion-input clearInput type="number" placeholder="Teléfono">
            </ion-input>
        </ion-item>
    </ion-list>
    <button ion-button item-end round full icon-start color="dark" class="botones">
        <ion-icon name='checkmark-circle-outline'></ion-icon>
        registar
      </button>
</ion-content>

【问题讨论】:

  • 根据docs,当您尝试从不存在的存储中检索某些内容(未找到该密钥)时,这是预期的异常。在这种情况下听起来是对的,除非我误解了你。
  • @MattM 在这些情况下我该怎么办
  • 我不确定我是否理解你。这个关键的“用户”应该什么时候真正存在于您的 nativeStorage 服务中?
  • 您可以发布与注册相关的代码吗?注册成功后,应该这样存储用户数据:this.nativeStorage.setItem('user', user)。

标签: angular typescript ionic-framework ionic3


【解决方案1】:

您需要使用fat arrow functions,如下所示。

ionViewCanEnter() {
         let env = this;
        return this.nativeStorage.getItem('user')
            .then((data) => {
                env.user = {
                    name: data.name,
                    email: data.email
                };
                console.log(env.user);
                env.userReady = true;
                return true;
            }, (error)=> {
                console.log(error);
                return false;
            });
    }

【讨论】:

  • 你好,对不起我的英语,出现 esque 的错误不会发生在下一页,那个班级告诉我这个 vacion entocnes 我的问题是我该怎么做一个 if 以便当这个 vacion在 ngModel 中把我“”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
相关资源
最近更新 更多