我会尽力解释这个问题。
我的登录页面上有一个下拉列表,它设置了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>
答案 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),当你回到页面或创建一个新实例时,它应该触发。它还可以帮助您了解正在发生的事情。