Ng-lazyload-image: рдЖрдпрдирд┐рдХ рдмрд┐рд▓реНрдб :: рд╕рдВрдкрддреНрддрд┐ '_el' рдирд┐рдЬреА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рджрд┐рд╕ре░ 2016  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: tjoskar/ng-lazyload-image

рдирдорд╕реНрддреЗ,

рдЬрдм рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред

рд╕рдВрдкрддреНрддрд┐ '_el' рдирд┐рдЬреА рд╣реИ рдФрд░ рдХреЗрд╡рд▓ 'рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ' рд╡рд░реНрдЧ рдХреЗ рднреАрддрд░ рд╣реА рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реИред

рдиреАрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгред

<ion-content #container>
<div>
<div class="bootstrap-row">
<div class="col col-50" *ngFor="let product of products">
<img *ngIf="container._scroll._el.offsetParent !== null" [lazyLoad]="imagePath+product.image" src="img/others/load-product-thumb.png" [scrollTarget]="container._scroll._el">
</div>
</div>
</div>
</ion-content>

рд╕рднреА 13 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕рдиреЗ рдореЗрд░рд╛ https://github.com/tjoskar/ng2-lazyload-image/issues/73 рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреА рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреАред
рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЖрдпрдирд┐рдХ 2 рдореБрджреНрджреЗ рдХреА рддрд░рд╣ рдЖрд▓рд╕реА рд▓реЛрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред
рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрдпрдирд┐рдХ 2 рдРрдкреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрдм рдореИрдВ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ

@ sidjoshi001 , рдЬрдм рдЖрдк "рдмрд┐рд▓реНрдб" рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рдПрдУрдЯреА рд╕рдВрдХрд▓рди рд╣реИ ?

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдЖрдпрдирд┐рдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред *ngIf="container._scroll._el.offsetParent !== null" [scrollTarget]="container._scroll._el" рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХрдорд╛рддреНрд░ (рд╡рд░реНрддрдорд╛рди) рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрдпрдирд┐рдХ 2 рдРрдкреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдХрднреА рднреА рдЖрдпрдирд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдЖрдпрдирд┐рдХ рдЬреНрдЮрд╛рди рд╕реАрдорд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдкрд╛рдпрд╛; рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдпрдирд┐рдХ рдХрд╛ рдЕрдкрдирд╛ рд╕реНрдХреНрд░реЙрд▓ рд╢реНрд░реЛрддрд╛ рд╣реИред
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдкреБрди: рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдХреЛрдгреАрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рд╣реЛ рдФрд░ рдпрд╣ рдХрд┐ рд╕рднреА рддрд░реНрдХ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ lib-file рдореЗрдВ рд╣реЛрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдПрдХ рдирдпрд╛ рдЖрдпрдирд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ lazyLoadIonic (рдпрд╛ рдХреБрдЫ) рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

@Directive({
  selector: 'lazyLoadIonic'
})
export class LazyLoadIonic {
  @Input('lazyLoad') lazyImage;
  @Input('src') defaultImg;
  @Input('errorImage') errorImg;
  @Input() offset

  constructor(@Host() private _content: Content, private el: ElementRef) {}

  ngOnInit() {
    lazyLoadImage(
      this.lazyImage,
      this.defaultImg,
      this.errorImg,
      this.offset,
      this.el,
┬а     this._content.ionScroll
    ).subscribe();
  }

}

@Directive({
    selector: '[lazyLoad]'
})
export class LazyLoadImageDirective {
  @Input('lazyLoad') lazyImage;
  @Input('src') defaultImg;
  @Input('errorImage') errorImg;
  @Input() scrollTarget;
  @Input() offset

  constructor(private el: ElementRef) {
      this.elementRef = el;
  }

  ngOnInit() {
    lazyLoadImage(
      this.lazyImage,
      this.defaultImg,
      this.errorImg,
      this.offset,
      this.el,
┬а     getScrollListener(this.scrollTarget)
    ).subscribe();
  }
}

function lazyLoadImage(lazyImage, defaultImg, errorImg, offset, elementRef, scrollObservable) {
  return scrollObservable.filter(() => isVisible(elementRef, offset))
    .take(1)
    .switchMap(() => loadImage(lazyImage))
    // and so on
}

рдореЗрд░рд╛ рд╕рдордп рдЕрднреА рд╕реАрдорд┐рдд рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдХрдм рдорд┐рд▓реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдкреАрдЖрд░ рдХрд╛ рд╣рдореЗрд╢рд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ :)

@tjoskar рдЕрд░реЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпрд╣ рдирд┐рд░реНрджреЗрд╢ Ionic2 рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ .. !! рдЬрд╡рд╛рдм рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░

@ sidjoshi001 , рдореИрдВрдиреЗ рдирд╣реАрдВ рдХрд┐рдпрд╛: / рдореБрдЭреЗ рдЕрднреА рддрдХ рд╕рдордп рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреБрдЫ рдЦрд╛рд▓реА рд╕рдордп рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

@tjoskar рдЕрднреА рднреА рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ ... !! ionic2 . рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ

@ sidjoshi001 , рдореИрдВ рдЕрднреА рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рди рдХрдм рд╣реИ: /

@ sidjoshi001 , @Host() private _content: Content рд╕рд╛рде рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рдпрд╛рд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рдо рдХреЗрд╡рд▓ рдореВрд▓ рдШрдЯрдХ рд╕реЗ Content рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЖрд▓рд╕реА рд▓реЛрдб рдирд┐рд░реНрджреЗрд╢ рдПрдХ рдмрд╛рд▓ рдкрддреНрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдирдИ рд╕рдВрдкрддреНрддрд┐ scrollObservable рдЬреЛрдбрд╝реА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЖрдпрдирд┐рдХ рд╕реНрдХреНрд░реЙрд▓ рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:

<ion-content #container padding>
  <img src="https://www.placecage.com/1000/1000" [lazyLoad]="lazyLoadImage" [scrollObservable]="container.ionScroll" />
</ion-content>

рдЗрд╕реЗ рд╕рдВрд╕реНрдХрд░рдг 2.3.1: $ npm install [email protected] рдореЗрдВ рдЖрдЬрд╝рдорд╛рдПрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИред

@tjoskar рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж ...

рд▓реЗрдХрд┐рди рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ

рд▓реЗрдХреНрд╕рд░ рдПрд░рд░: рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдХреИрд░реЗрдХреНрдЯрд░ [╨╛] рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдореЗрдВ рдХреЙрд▓рдо 12 рдкрд░ [container.i╨╛nScroll]' рдХреЙрд▓рдо 13 рдореЗрдВ [container.i╨╛nScroll]

рдореЗрд░рд╛ рдХреЛрдб рдиреАрдЪреЗ рд╣реИ ..

<ion-content class="content"  #container>
    <ion-spinner class="page-loading" color="purple" *ngIf="!categories"></ion-spinner>
    <div *ngIf="categories">
        <div class="categories" *ngFor="let category of categories.categories; let i = index ">
            <div class="title" id="{{i}}">{{ category.name }}</div>
            <div class="bootstrap-row">
                <div class="col col-33 siblings" *ngFor="let sibling of category.siblings; let odd = odd" [ngClass]="odd ? 'odd' : null" (click)="toProductList(sibling)">
                    <img src="assets/img/others/load-300-300.png" [lazyLoad]="categories.imagePath+sibling.image" [scrollObservable]="container.i╨╛nScroll" />
                    <div class="name">{{ sibling.name | trancate:25 }}</div>
                </div>
            </div>
        </div>  
    </div>
</ion-content>

@ sidjoshi001, рд╢рд╛рдпрдж рдПрдХ рд▓рдВрдмреЗ рд╢реЙрдЯ рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ o рдореЗрдВ i╨╛nScroll рдирд╣реАрдВ рд╣реИ рдПрдХ рд╕рд╛рдзрд╛рд░рдг o рдХреЛрдб рдореЗрдВ рдЖрдк рднреА рд╢рд╛рдорд┐рд▓ рдереЗред рдЕрдЧрд░ рдореИрдВ ╨╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЪрд╛рд░рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред '╨╛'.charCodeAt(0) рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ) рдореБрдЭреЗ 1086 рдорд┐рд▓рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп o рдореЗрдВ рдЪрд╛рд░рдХреЛрдб 111 рд╣реЛрддрд╛ рд╣реИред рддреЛ, рдХреНрдпрд╛ рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ container.i╨╛nScroll рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╣рд╛рде рд╕реЗ рдЯрд╛рдЗрдк рдХрд░реЗрдВ?

рдпреЛ... @tjoskar рдзрдиреНрдпрд╡рд╛рдж, рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ..!!

рдпрд╣рд╛рдВ рдЕрд╕рд▓реА рдореБрджреНрджрд╛ рд╣реИ @tjoskar рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рджреЗрдЦрд╛ рдФрд░ @ sidjoshi001 рдЖрдкрдиреЗ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛: рд╕реНрдорд╛рдЗрд▓реА:

@ sidjoshi001 , рдмрдврд╝рд┐рдпрд╛! рдореИрдВ рд╕рдорд╛рдзрд╛рди рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрддрд╛ред рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╣рдореЗрд╢рд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ :)

@comfortme , рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ ╨╛ рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рдерд╛ (рдпрд╣ рдореЗрд░реЗ рдИрдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рдЪрд▓рди рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдпрджрд┐ рдЖрдк рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ container.i╨╛nScroll рдореЗрдВ рд╕реНрдерд┐рддрд┐ 12 рдкрд░ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

coryrylan picture coryrylan  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rimlin picture rimlin  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

elitenick picture elitenick  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AndreasSchmid1 picture AndreasSchmid1  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

audacitus picture audacitus  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ