Ionic3 自定義組件實(shí)現(xiàn)圖片懶加載效果

在使用ionic3的過程中,我們可以使用angularjs的組件特性進(jìn)行組件的自定義開發(fā),對一些特定條件下的需求開發(fā)對應(yīng)的組件。

下面我們就通過自定義組件來實(shí)現(xiàn)圖片的懶加載效果。當(dāng)我們需要加載的圖片很大,但是我們又不愿意做壓縮讓圖片失真,所以我們需要使用圖片的懶加載效果。

實(shí)現(xiàn)流程

首先新建一個(gè)img-lazy-load組件:

ionic g component img-lazy-load

會在src目錄下生成一個(gè)components文件夾,里面包含img-lazy-load這個(gè)組件。
結(jié)構(gòu)如下:

這里寫圖片描述

然后主要修改兩個(gè)地方,一個(gè)是img-lazy-load.ts文件,一個(gè)是img-lazy-load.html文件

修改后的img-lazy-load.ts文件:

import { Component, Input } from '@angular/core';

@Component({
  selector: 'img-lazy-load',
  templateUrl: 'img-lazy-load.html'
})
export class ImgLazyLoad {

  default: string = 'assets/images/default.png';

  constructor() {

  }

  @Input() src: string //要顯示的圖片

  ngOnInit() {
    let img = new Image();
    img.src = this.src;
    img.onload = () => {
      //這里為了達(dá)到演示效果給了兩秒的延遲,實(shí)際使用中不需要延遲
      setTimeout(() => {
        this.default = this.src;
      }, 2000)
    }
  }
}

修改后的img-lazy-load.html文件

![]({{default}})

最后在使用的頁面引入該組件即可使用。比如我們在home這個(gè)頁面使用該組件,
那么我們首先在home.module.ts文件中引入組件

@NgModule({
  declarations: [
    HomePage,
  ],
  imports: [
    IonicPageModule.forChild(HomePage),
    ImgLazyLoadModule//引入該組件
  ],
  exports: [
    HomePage
  ]
})

然后在home.html即可使用

<img-lazy-load [src]="imgUrl"></img-lazy-load>

這里需要注意,如果我們在ts文件中綁定imgUrl的話就按照上面那樣綁定值,如果imgUrl是通過ngFor綁定的值,就不需要加{{}},如果imgUrl修改為定值的話,比如<img-lazy-load [src]="https://ss2.baidu.com/-vo3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=333f3ac494510fb367197097e932c893/a8014c086e061d95df89434571f40ad163d9ca84.jpg"></img-lazy-load>這樣寫會拋出異常,解決方案就是將“url地址”改為“'url地址'”*

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,641評論 19 139
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,727評論 9 468
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,172評論 25 708
  • 我又很久沒來寫東西了,說實(shí)話,有很多想要說的,但是因?yàn)閼械脛邮?,就擱淺了。 前幾天,和閨蜜娜娜小聚了一下,大概真的...
    簪嵐子閱讀 287評論 0 1
  • 我恨死你們了,你們怎麼可以這樣。你們怎麼可以這樣傷害我愛的人。我討厭死你們了。我恨死你們了,我寧可自己死都不弄疼她...
    阿貍世界閱讀 176評論 0 0

友情鏈接更多精彩內(nèi)容