NavCtrl Ionic 3的问题?

时间:2018-04-30 19:43:47

标签: angular ionic-framework

我会尽力解释这个问题。

我的登录页面上有一个下拉列表,它设置了NgModel位置,这是它从中获取请求的URL的一部分。例如,http.get(www。+ location + .com)

我第一次从select和on click设置NGModel时请求请求正常工作并转到下一页并显示它返回的数据。

当我使用内置于默认侧边菜单的后退按钮甚至是this.navctrl.push(登录页面),然后从下拉列表中选择其他内容时单击并生成httprequest,NGModel仍然设置为选中的内容第一次。

因此,例如在第一次请求时,我将NGModel设置为伊利诺伊州的下拉列表。 http.get(www.Illinois.com)

然后使用内置的navctrl后退按钮或使用this.navtrl.push(登录页面)

这次我从下拉列表中选择了加利福尼亚。我还是得到的 http.get(www.Illinois.com)

有什么想法可以解决这个问题吗?

我在LoginPage上设置位置的一些背景

<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 :(得分:0)

我可以看到很少的东西可以解释你所看到的行为。

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-在你的ngOnInit()中使用console.log(this.location),当你回到页面或创建一个新实例时,它应该触发。它还可以帮助您了解正在发生的事情。