网站搜索

angular - 本地存储错误,无法显示以下屏幕


我正在尝试实现登录。

有两种注册选项,一种是使用你在 FB 上的数据注册,另一种是手动输入。

在第一个表单中,你与 Facebook 连接,他会获取你的姓名和邮箱,然后把你发送到下一个窗口,在那里你必须输入你的电话号码

在你提供的注册的第二个选项中,当你点击“立即注册”时,它会将你带到与上面相同的页面,只是这次字段是空的。

当我选择第二个选项时,会出现错误,并且屏幕不显示如下错误:

它告诉我它是空的,那么我的疑问是,当它到达空的状态时,它是否显示正常屏幕

这是我使用 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,其中包含两个按钮:

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

答案#1

你需要像下面这样使用箭头函数。

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;
            });
    }