【发布时间】:2016-03-29 03:15:36
【问题描述】:
问题是同时我正在尝试检查资源服务器上是否存在一个图像,Angular NgFor 正在执行它的工作。
我可以猜到,img.src 执行了请求,然后我在回调中的返回没有按预期返回,事实上,defaultPrincipalUrl 方法没有按预期返回任何内容,因此 Angular 一次又一次地执行相同的请求.
但是,我不知道用 Javascript 解决它的方法。
html 中的 NgFor 如下所示。
<div class="formItem">
<div *ng-for="#principal of localService.defaultPrincipals">
<img src="{{defaultPrincipalUrl(principal)}}" />
</div>
</div>
其中 localService.defaultPrincipals 是一个包含图像名称的数组。
在 Angular2 @Component 类中,我有下一个实现。
private imageExists(imageSrc, callback) {
var img = new Image();
img.onload = function () { callback(imageSrc, true); };
img.onerror = function () { callback(imageSrc, false); };
img.src = imageSrc;
}
defaultPrincipalUrl(principal) {
var im = IMAGE_DOMAIN + '/principal/' + principal;
console.log(im);
this.imageExists(im, function (imageSrc, exists) {
console.log('RESULT: url=' + imageSrc + ', exists=' + exists);
if (exists) {
return imageSrc;
} else {
return '#';
}
});
}
【问题讨论】:
-
defaultPrincipalUrl 不返回值 .. 调用回调返回的值不会被传播(它也是一个异步回调)。
标签: javascript typescript angular