3
私の仕事ページにはタブのページの1つの機能があります。 APIからデータを要求するためにページが入ると、読み込む関数を書いています。タブのページが2回読み込まれる機能
注:タブのページを除き、プッシュオープンページは正常に動作しています。
これはIonic 3.0.1ではうまくいきましたが、一度Ionic 3.1.0にアップグレードすると、ページに入ると機能が2回読み込まれました。ここで
は私work.tsコード
ionViewWillEnter() {
if(this.auth.authUser()) {
this.isLogin = true;
this.userData = this.auth.getUserInfo();
} else {
this.isLogin = false;
}
if(this.isLogin) {
this.getClientList(true);
} else {
this.clientData = [];
}
}
...
private getClientList(resetPage) {
console.log('loaded getClientList');
this.isEmpty = false;
this.userData = this.auth.getUserInfo();
if(resetPage) {
this.content.scrollToTop(0);
this.clientPage = 1;
}
let pageSkip = (this.clientPage-1)*this.clientPerPage;
let postData = 'take=' + this.clientPerPage;
postData += '&skip=' + pageSkip;
postData += '&uid=' + this.userData.userId;
if (this.category != '0') {
postData += '&category=' + this.category;
}
if (this.gradeId) {
postData += '&grade=' + this.gradeId;
}
let params = {
link: 'app/client/my_client_list',
data: postData,
}
this.showLoading('loading...');
this.api.httpApi(params).subscribe(data => {
this.loading.dismiss();
if (data.status_code == 1) {
this.clientData = [];
if(data.data.length > 0) {
this.clientData=data.data;
// this.productState = 'in';
if(this.clientPage < 1) {
this.clientPage++;
}
if(data.data.length < this.clientPerPage) {
this.isEnd = true;
} else {
this.isEnd = false;
}
} else {
this.isEmpty = true;
this.isEnd = false;
}
} else if (data.status_code == 500) {
this.navCtrl.push('LoginPage');
} else if (data.status_code == 0) {
this.isEmpty = true;
this.isEnd = false;
} else {
this.showError('network problem');
}
},
error => {
this.loading.dismiss();
this.pushLogin();
// this.showError(error);
});
}
コンソールログ出力
Hello AuthService Provider
work.ts:173 loaded getClientList
work.ts:173 loaded getClientList
イオン性情報
Cordova CLI: 6.5.0
Ionic Framework Version: 3.1.0
Ionic CLI Version: 2.2.1
Ionic App Lib Version: 2.2.0
Ionic App Scripts Version: 1.3.4
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 10
Node Version: v6.10.2
Xcode version: Not installed
[EDIT]
ですAPIリクエスト関数をコンストラクタ内に置くと、その関数は1回だけ実行されます。しかし、IonViewWillEnterを使用したい場合は、この問題を解決できません。