Проблема с NavCtrl Ionic 3? - PullRequest
       2

Проблема с NavCtrl Ionic 3?

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

Я сделаю все возможное, чтобы объяснить эту проблему.

У меня есть выпадающий список на странице входа в систему, в котором указывается расположение NgModel, которое является частью URL-адреса, с которого он получает запрос get. Например, http.get (www. + Location + .com)

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

Когда я использую кнопку «Назад», которая была встроена в боковое меню по умолчанию, или даже this.navctrl.push (страница входа), а затем выбираю что-то еще из выпадающего щелчка и делаю httprequest, NGModel по-прежнему имеет то, что было выбрано в первый раз.

Так, например, по первому запросу я установил NGModel в раскрывающемся списке на Иллинойс. http.get (www.Illinois.com)

, а затем используйте встроенную кнопку назад navctrl или this.navtrl.push (страница входа)

на этот раз я выбираю Калифорнию из выпадающего списка. Я все еще получаю http.get (www.Illinois.com)

Есть идеи, что за проблема может быть здесь?

Небольшой фон того, как я устанавливаю местоположение на странице входа в систему

<ion-content padding>

  <ion-list>
    <img style="display: block;
      margin-left: auto;
      margin-right: auto;
      width: 25%;" src="assets/imgs/DotFoodsLogo.jpg">
    <ion-item>
      <ion-label>Username</ion-label>
      <ion-input style="text-align: right" [(ngModel)]="employeeNumber" (change)="getTasks(employeeNumber, location)" type="number"
        value="" item-right></ion-input>
    </ion-item>

    <ion-item>
      <ion-label>Location</ion-label>
      <ion-select [(ngModel)]="location" (ngModelChange)="getTasks(employeeNumber, location)" interface="popover">
        <ion-option *ngFor="let databasename of locations">{{databasename.DatabaseName}}</ion-option>
      </ion-select>
    </ion-item>

    <ion-item *ngIf="employeeNumber != null && location != null">
      <ion-label>Task</ion-label>
      <ion-select [(ngModel)]="task" interface="popover">
        <ion-option *ngFor="let task of tasks">{{task.TaskDisplay}}</ion-option>
      </ion-select>
    </ion-item>
  </ion-list>

  <ion-buttons text-center *ngIf="employeeNumber != null && location != null && task != null">

      <button ion-button color="primary" (click)="attemptLogin(employeeNumber, location)">
        Log in
      </button>

  </ion-buttons>
</ion-content>

1 Ответ

0 голосов
/ 01 мая 2018

Я вижу несколько вещей, которые могут объяснить поведение, которое вы видите.

1 - При создании this.navtrl.push(loginpage) будет добавлен новый экземпляр loginPage. В результате вы получаете оба loginPages для прослушивания одного и того же события.

Вместо этого используйте this.navCtrl.pop(); или this.navCtrl.setRoot(loginpage);

2- location и employeeNumber являются свойствами экземпляра, поэтому вам не нужно включать их в свои getTasks (employeeNumber, location).

Вместо этого сделайте что-то вроде этого:

getTasks(){
   //access location and employeeNumber like so
   console.log(this.location);
   console.log(this.employeeNumber );
   If you see this console printing twice, it means you have duplicate pages.
}

3 - используйте console.log (this.location) в вашем ngOnInit (), который должен срабатывать всякий раз, когда вы возвращаетесь на страницу или создаете новый экземпляр. Это также поможет вам понять, что происходит.

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