【组件篇】ionic3均分列等宽高图像显示(下)

原文再续,书接上一回,上回讲到了“均分列等宽高图像显示(上)”,但是我埋了一个坑,各位看官有没有留意到?

那就是它依赖一个addImage(用于添加的仿按钮图像),如果我没有这个东西,逻辑上是不是就不能用了?是的!那为了使得这个组件能更通用些,改造一下:

旧的html:

<ion-row align-items-center>
  <ion-col col-3 align-self-center *ngFor="let item of images, let i = index">
    <ion-thumbnail tappable (click)="onViewImages(i)">
      <img src="{{item?.originPath}}" class="auto-image" [style.height]="width"/>
    </ion-thumbnail>
  </ion-col>
  <ion-col col-3 align-self-center>
    <ion-thumbnail *ngIf="images && images.length<max && canAdd" tappable (click)="onAddImage()">
      <img #addImage src="assets/imgs/add.png" class="auto-image"/>
    </ion-thumbnail>
  </ion-col>
</ion-row>

img都定义变量为#image,同时移除[style.height]="width",变成新的:

<ion-row align-items-center>
  <ion-col col-3 align-self-center *ngFor="let item of images, let i = index">
    <ion-thumbnail tappable (click)="onViewImages(i)">
      <img #image src="{{item?.originPath}}" class="auto-image" />
    </ion-thumbnail>
  </ion-col>
  <ion-col col-3 align-self-center>
    <ion-thumbnail *ngIf="images && images.length<max && canAdd" tappable (click)="onAddImage()">
      <img #image src="assets/imgs/add.png" class="auto-image"/>
    </ion-thumbnail>
  </ion-col>
</ion-row>

旧的ts这部分:

  width: string;
  @ViewChild('addImage') img: ElementRef;

  ngAfterViewChecked(){
    this.width = this.img.nativeElement.width + 'px';
  }

变为新的:

  @ViewChildren('image') childCmps: QueryList<ElementRef>;

  ngAfterViewChecked(){
    if(this.childCmps && this.childCmps.length>0){
      this.childCmps.forEach(item =>{
        item.nativeElement.height = item.nativeElement.width;
      })
    }
  }

原理很简单,由原来依赖addImage,变为根据自身的宽度调整高度。当然这里我只是以实现为目的的,如想优化那烦请客官自行尝试再告知本人,谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我在《ionic3开源组件》提到了图片选择组件,但是后来发现其实现功能很简单,而且我不喜欢它写死了宽高大小,这对于...
    IT晴天阅读 5,693评论 2 11
  • 今天我为007自豪,7年后007为我自豪。说到底,要想有所作为,必须以自己的真诚之心为支点。努力至诚,金石为开。 ...
    牙医零柒阅读 2,206评论 2 1
  • 1.注册 使用EventBus的第一步就是需要给当前的Activiy注册,注册方式如下 直接看register里面...
    黄大大吃不胖阅读 1,603评论 0 0
  • 黎明渐渐苏醒 我还看不清远方 在这个时候 你来了 彭沐烟
    彭写特阅读 1,189评论 0 1
  • 越来越喜欢在一个能够与陌生人沟通交流的环境了 喜欢别人的文章 就在文章下留一些看起来没头脑却有点小道理的评论 可能...
    爱你么么嘎阅读 1,450评论 2 0

友情链接更多精彩内容