当我在我的Android设备上使用我的PC启动它时,我的Ionic应用程序正常工作。现在我在家,我把所有东西从github拉到我的私人Windows PC,然后我运行“npm install”和“cordova platform add android”和“ionic run android --device”。现在该应用程序不像以前那样工作。我有一个页面,我从后端服务器加载图像。
<ion-content padding>
Test
{{test}}
<ion-card *ngFor="let image of images" (click)="goToProfilePage(image.hash);">
<img src="{{image.url}}"/>
<div class="card-title">{{image.name}}</div>
<div class="card-subtitle">{{image.address}}, {{image.zip}} {{image.city}}</div>
</ion-card>
</ion-content>
TS:
images: any;
test: any;
constructor(public navCtrl: NavController, public navParams: NavParams, public uiHelper: UiHelper, public api: ApiService, public zone: NgZone) {
this.test = "Test2";
this.loadImages();
}
loadImages() {
this.test = "Test3";
this.uiHelper.showLoading();
this.test = "Test4";
this.api.getImagesForScreen().then(
response => {
this.test = "Test5";
if (response['status'] == constants.API_ON_SUCCESS) {
this.test = "Test6";
console.log("Loaded");
this.zone.run(() => {
this.test = "Test7";
this.images = response['data'];
this.shuffle(this.images);
this.uiHelper.dismissLoading();
});
}
else {
this.uiHelper.dismissLoadingAndPrintApiErrorWithMessage(response['messages']);
}
},
err => {
this.uiHelper.dismissLoadingAndPrintApiError();
}
);
}
视图输出为“Test Test4”。因此,似乎视图在api.getImagesForScreen()返回的promise中不再更新。代码应该可以正常工作,因为如果我打开chrome://检查并打开控制台,则会记录“已加载”。所以他肯定应该在视图上向我展示“Test6”或“Test7”。 api.getImagesForScreen的承诺是这样创建的:
import {Promise} from 'es6-promise';
...
new Promise((resolve, reject) => {
this.http.get(url).map(res => res.json()).subscribe(
data => {
resolve(data);
},
err => {
reject(err);
}
);
});
有人可以帮我吗?
修改
另一个奇怪的事情:当我从其他网站打开网站时出现问题。如果我将此页面设置为起始页面,则一切正常。但是,当我切换页面然后再次返回该页面时,它就不再起作用了。因此,似乎第一次从后端加载某些东西它正在工作,但在第二次它不再工作(只有视图,因为控制台仍然记录“加载成功”)。控制台中没有错误...