首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >*ngFor有多个镜像标签-如何知道所有镜像src何时加载

*ngFor有多个镜像标签-如何知道所有镜像src何时加载
EN

Stack Overflow用户
提问于 2021-07-22 21:54:02
回答 2查看 67关注 0票数 0

我有一个图像urls数组。在HTML端,我将它显示在*ngFor标签中。

使用的技术堆栈-离子4,角度10

代码语言:javascript
复制
<div *ngFor="let url of imagesToLoad; let i = index">
            <ion-img [src]="url"></ion-img>
</div>

可以对imagesToLoad数组进行混洗,如果图像已经加载,则不会再次调用url,因此不会触发imageLoaded事件。

我想知道我们是否可以在加载所有图像后调用一个函数。

请参考此链接了解stackblitz。https://stackblitz.com/edit/angular-ynceyn?file=src%2Fapp%2Fapp.component.html

EN

回答 2

Stack Overflow用户

发布于 2021-07-22 22:25:18

快速浏览一下文档:https://ionicframework.com/docs/api/img

它看起来像是暴露了ionImgDidLoad事件,所以你可以绑定到它:

代码语言:javascript
复制
<ion-img [src]="url" (ionImgDidLoad)="onImageLoaded()"></ion-img>

然后数一下呼叫数:

代码语言:javascript
复制
private loadCount = 0;
public onImageLoaded(): void {
   this.loadCount++;
   if(this.loadCount === this.imagesToLoad.length) {
       console.debug('All images loaded');
   }
}
票数 1
EN

Stack Overflow用户

发布于 2021-07-22 22:33:36

我不认为你可以在html中触发回调函数。

您可以做的是,向镜像发出GET请求。

假设您得到的是B64编码的响应。您可以将此数据传递到img标记的src属性中,如here所示。通过这种方式,您可以确保在注入img标签之前加载了所有图像。

您还可以在img上处理onload事件。

例如:

代码语言:javascript
复制
var img = document.getElementsByClassName('img-class');
img.forEach(image => image.onload(function(e) {console.log("image loaded.")}));

这将在每个图像加载后调用onload函数。如果您想在加载完所有图像后加载一次

我还看到在ionic img上有ionImgDidLoad事件。你可以用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68486070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档