View 离子2-视图未在承诺范围内更新
当我在android设备上使用PC启动Ionic应用程序时,它运行良好。现在我在家里,从github到我的私人windows PC,我把所有的东西都拿出来,然后我运行了“npm安装”、“cordova平台添加android”和“ionic运行android——设备”。现在这个应用程序不像以前那样工作了。我有一个从后端服务器加载图像的页面View 离子2-视图未在承诺范围内更新,view,promise,ionic2,View,Promise,Ionic2,当我在android设备上使用PC启动Ionic应用程序时,它运行良好。现在我在家里,从github到我的私人windows PC,我把所有的东西都拿出来,然后我运行了“npm安装”、“cordova平台添加android”和“ionic运行android——设备”。现在这个应用程序不像以前那样工作了。我有一个从后端服务器加载图像的页面 <ion-content padding> Test {{test}} <ion-card *ngFor="let ima
<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>
视图输出为“Test4”。因此,在从api.getImagesForScreen()返回的承诺中,视图似乎不再更新。代码应该可以正常工作,因为如果我打开chrome://inspect 并打开控制台,直到有“已加载”的日志记录。因此,他肯定应该在视图中显示“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);
}
);
});
有人能帮我吗
编辑:
还有一件奇怪的事:当我从另一个站点打开站点时,问题就出现了。如果我将此页设置为起始页,则一切正常。但是,当我切换页面,然后再次返回该页面时,它就不再工作了。因此,似乎第一次从后端加载某个东西时它正在工作,但第二次它不再工作了(只有视图,因为控制台仍然记录“加载成功”)。控制台中没有错误…即使我遇到了同样的问题。我使用http的可观察性。但在低端设备(如IOS 9.3.4)上,当视图在android、浏览器和IOS 10及以上版本上都能正常工作时,它不会被加载。同样的问题是,通常情况下,promise Reponnes会出现同样的问题。例如,使用承诺检索本地存储数据或模拟数据。如果我使用console.log,我可以看到我得到了新的值,但是视图没有更新。我使用angular/core中的ChangeDetectorRef,但我在所有promise的响应中调用detectChanges()方法,这很难看。
import {Promise} from 'es6-promise';
...
new Promise((resolve, reject) => {
this.http.get(url).map(res => res.json()).subscribe(
data => {
resolve(data);
},
err => {
reject(err);
}
);
});