前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【组件篇】ionic3均分列等宽高图像显示(下)

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

作者头像
IT晴天
发布2018-08-20 10:56:54
4150
发布2018-08-20 10:56:54
举报
文章被收录于专栏:ionic3+ionic3+

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

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

旧的html:

代码语言:javascript
复制
<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",变成新的:

代码语言:javascript
复制
<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这部分:

代码语言:javascript
复制
  width: string;
  @ViewChild('addImage') img: ElementRef;

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

变为新的:

代码语言:javascript
复制
  @ViewChildren('image') childCmps: QueryList<ElementRef>;

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档