angular图片懒加载-新闻详情

angular图片懒加载


发布时间:2018-03-07责任编辑:朱明 浏览:1773


当前项目使用angular框架,封装了图片懒加载的控件以方便使用。

先看下怎么样使用吧:

201802angular图片懒加载.1.png201802angular图片懒加载.2.png201802angular图片懒加载3.png201802angular图片懒加载.4.png 

 

 

 


加了个lazyload就自动变成懒加载了,是不是很简单,哈哈。以后的项目可有福了,简单易用。


这是封装的部分代码:

@Directive({

  selector: '[lazyload]'

})

export class ImgLazyLoad implements OnInit {


  private imgSourceSrc;

  private imgHoderSrc = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC';

  private srcListenTimeInterval;


  @Input('imgHolder')

  set imgHolder(value: string) {

    this.imgHoderSrc = value;

  }


  @Input()

  public scrollContainer;


  constructor(public element: ElementRef) {

  }


  ngOnInit() {

    this.srcListenTimeInterval = setInterval(c => {

      let com = c as ImgLazyLoad;

      let $element = $(com.element.nativeElement);

      let elementSrc = $element.attr("src");

      if (elementSrc != com.imgHoderSrc && elementSrc != com.imgSourceSrc && elementSrc) {

        console.log("lazyimg inited");

        com.imgSourceSrc = elementSrc;

        console.log("load src" + com.imgSourceSrc)

        $element.attr("src", com.imgHoderSrc)

        $element.attr('data-original', this.imgSourceSrc);

        console.log( com.scrollContainer);

        $(this.element.nativeElement).lazyload({

          effect: 'show',

          container: com.scrollContainer,

        });

        console.log("lazyimg finish");

      }

    }, 100, this);

  }


  ngAfterViewInit() {


  }


  ngOnDestroy() {

    if (this.srcListenTimeInterval) {

      clearInterval(this.srcListenTimeInterval);

    }


  }


}



项目开发组  供稿