Кнопка Ionic 3 не появляется после того, как пользователь вошел в систему, и глобальная переменная изменилась в соответствии с ее состоянием - PullRequest
0 голосов
/ 29 апреля 2019

В моем app.component.ts я добавил боковое меню, где оно содержит все страницы. Для страницы входа / регистрации я добавил следующий скрипт:

<button menuClose ion-item (click)="authenticate()" *ngIf="!isLoggedIn">
    <ion-icon name="log-in"></ion-icon> Login/Register
</button>
<button menuClose ion-item (click)="logout()" *ngIf="isLoggedIn">
    <ion-icon name="log-out"></ion-icon> Logout
</button>

Как видите, если переменная isLoggedIn равна false, должна появиться login, в противном случае отображается кнопка выхода из системы.

Когда пользователь вошел в систему и в хранилище установлено значение user_id, а для isLoggedIn установлено значение true, кнопка выхода из системы не появляется.

Вот скрипт входа в систему:

if (response && response.status === 'success') {
    console.log(response.response.user_id);
    this.globalVar.loggedIn=true;
    // localStorage.setItem('user_id', response.data.user_id)
    this.storage.set('user_id', response.response.user_id);
    this.storage.set('fname', response.response.fname);
    this.storage.set('lname', response.response.lname);
    this.storage.set('email', response.response.email);
    loading.dismiss();
    this.storage.get('user_id').then((data)=>{
      this.globalVar.user_id=data
    });
    this.storage.get('fname').then((data)=>{
      this.globalVar.fname=data
    });
    this.storage.get('lname').then((data)=>{
      this.globalVar.lname=data
    });
    this.storage.get('email').then((data)=>{
      this.globalVar.email=data
    });
    this.viewCtrl.dismiss();
    let dataToSend={
      'offer_id': this.offer_id,
      'offerSelected': this.offerSelected,
      'user_id': this.globalVar.user_id
    };
    if(this.offerSelected && this.offer_id!='')
    {
      this.navCtrl.push(OfferDetailsPage, {
        data: dataToSend
      })
    }

  }
    else if (response && response.status == 'failed') {
      this.message = response.message;
      loading.dismiss();
    }
    else
    {
      this.message = 'Server is currently unavailable'
      loading.dismiss();
    }
  }, (error) => {
    loading.dismiss();
    this.showAlert(error.message);
    console.log(error)
  })
}

Я утешил isLoggedIn, и это правда.

1 Ответ

0 голосов
/ 30 апреля 2019

Это действительно очень грязный код, из того, что я вижу, вы не ссылаетесь на правильное имя переменной или просто не показывает весь код, необходимый для получения какой-либо помощи от сообщества здесь.

Выустановите переменную "this.globalVar.loggedIn = true;"

И ваши операторы if смотрят на переменную с именем "isLoggedIn"

Где определена переменная isLoggedIn?Это, вероятно, находится в вашем файле контроллера, который затем загружает ионное представление, на котором есть ваши кнопки, с инструкциями if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...