рдореИрдВ рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдПрдирдЬреА-рд▓реЛрдЬрд╝рд▓реЛрдб-рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рд╕реВрдЪреА рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдердВрдмрдиреЗрд▓ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рд╕реНрдХреНрд░реЙрд▓ рдИрд╡реЗрдВрдЯ рдирд╣реАрдВ рд╣реИред рдереЛрдбрд╝рд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╡реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдПрдХ рд╣реИрдбреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реВрдВ ...
// -1, +1 is there to fire the scroll event. Otherwise chrome/ff wont fire it.
window.scrollTo(window.scrollX, window.scrollY - 1);
window.scrollTo(window.scrollX, window.scrollY + 1);
рд╣рд╛рдп @philipgiuliani ,
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ ng-lazyload-image
рдХреЗрд╡рд▓ рдпрд╣ рдЪреЗрдХ рдХрд░рддреА рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЫрд╡рд┐ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЬрдм рддрдХ рдХреЛрдИ рд╕реНрдХреНрд░реЙрд▓ рдЗрд╡реЗрдВрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддрдм рддрдХ ng-lazyload-image
рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рддреЛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ ng-lazyload-image
рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рджреБрдирд┐рдпрд╛ рдмрджрд▓ рдЧрдИ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
ng-lazyload-image
рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдХ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЪрд┐рддреНрд░ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЙрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рд╣реИ)ред// In your component
constructor() {
this.updateSearchResult$ = new Subject();
this.scrollAndSearch$ = Observable.merge(
Observable.fromEvent(window, 'scroll')
this.updateSearchResult$
);
}
onSerachResultResponse() {
this.updateSearchResult$.next()
}
// in your template
<img [lazyLoad]="lazyLoadImage" [customObservable]="scrollAndSearch$" />
рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдорд┐рд▓рд╛?
рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рд╡рд╣ рд╣реИ рдЬрд╣рд╛рдВ рд▓реЛрдЧ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдкрд╛рдПрдВрдЧреЗред
рд╕рдорд╕реНрдпрд╛ : рдПрдХ рджреЗрд░реА рдХреЗ рдмрд╛рдж рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ, рднрд▓реЗ рд╣реА рд╡реЗ рдСрдлрд╕реЗрдЯ рдХреЗ рднреАрддрд░ рджрд┐рдЦрд╛рдИ рди рджреЗрдВ
рд╕рдорд╛рдзрд╛рди : рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдСрдлрд╝рд╕реЗрдЯ рдХреЗ рдмрдЬрд╛рдп, рдСрдлрд╝рд╕реЗрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдмрдирд╛рдПрдВ, рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪреНрдЪ рдСрдлрд╕реЗрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ
// in the Angular 2+ component
constructor () {
this.imageLoadOffset$ = Observable.merge(
Observable.of(300), // initial offset
Observable.of(100000).delay(5000) // offset triggering loading after 5 seconds
);
}
// in the template
<img [lazyLoad]="'foo.png'" [offset]="imageLoadOffset$ | async" />
рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рд░реАрдбрдореА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рд╛ред
рдЬрдм рдореИрдВ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕реНрдХреНрд░реЙрд▓ рдХреА рдЧрдИ рдЫрд╡рд┐ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЫрд╡рд┐ рдХреЛ рд╡рд░реНрддрдорд╛рди рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? ?
@pangshangggg , рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ред рдореИрдВрдиреЗ Google рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрдкрдХрд╛ рдкреНрд░рд╢реНрди рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛: / рдХреНрдпрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ?
Ionic 2/3 рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рдЪрд┐рддреНрд░ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдХреБрд░реВрдк рддрд░реАрдХрд╛ рдЗрд╕ рддрд░рд╣ рд╣реИ:
@ViewChild(Content) container: Content;
ionViewDidEnter() {
this.container.scrollTo(this.container.scrollLeft, this.container.scrollTop + 1);
this.container.scrollTo(this.container.scrollLeft, this.container.scrollTop - 1);
}
рдФрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ:
@ViewChild(Content) container: Content;
contentLoaded: Subject<any> = new Subject();
loadAndScroll: Observable<any>;
ionViewDidEnter() {
this.contentLoaded.next();
}
ionViewDidLoad() {
this.loadAndScroll = Observable.merge(
this.container.ionScroll,
this.contentLoaded
);
}
(in the template : [customObservable]="loadAndScroll" )
рдореИрдВрдиреЗ рдмрд╕ рдЖрдпрдирд┐рдХ рдХреЗ рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкреЛрдВрдб рдХрд┐рдпрд╛ред рдФрд░ рдХреБрдЫ рдирд╣реАрдВ :)
рдХреЛрдгреАрдп 6 рдФрд░ rxjs 6 рдореЗрдВ, рдореИрдВ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдХреЗ рд╕реНрдХреНрд░реЙрд▓ рдЗрд╡реЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЖрд▓рд╕реА рд▓реЛрдб рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рднреА рдЪрд┐рддреНрд░ рдкреГрд╖реНрда рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рд▓реЛрдб рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рд╣реИред
рд╕рд╛рдБрдЪрд╛:
<div *ngFor="let image of images">
<img [defaultImage]="defaultImage"
[lazyLoad]="image"
[useSrcset]="true"
[offset]="offset" [scrollObservable]="scrollObservable" >
</div>
рдШрдЯрдХ:
scrollObservable = fromEvent(window, 'scroll');
рдореИрдВрдиреЗ 224 рдХреЗ рдЕрдВрдХ рд╕реЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдЬрд╣рд╛рдВ рдПрд▓-рджрд╛рд╡реЛ рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдХреЛрдгреАрдп 5 рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ
Ionic 2/3 рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рдЪрд┐рддреНрд░ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдХреБрд░реВрдк рддрд░реАрдХрд╛ рдЗрд╕ рддрд░рд╣ рд╣реИ:@ViewChild(Content) container: Content; ionViewDidEnter() { this.container.scrollTo(this.container.scrollLeft, this.container.scrollTop + 1); this.container.scrollTo(this.container.scrollLeft, this.container.scrollTop - 1); }
рдФрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ:
@ViewChild(Content) container: Content; contentLoaded: Subject<any> = new Subject(); loadAndScroll: Observable<any>; ionViewDidEnter() { this.contentLoaded.next(); } ionViewDidLoad() { this.loadAndScroll = Observable.merge( this.container.ionScroll, this.contentLoaded ); } (in the template : [scrollObservable]="loadAndScroll" )
рдореИрдВрдиреЗ рдмрд╕ рдЖрдпрдирд┐рдХ рдХреЗ рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкреЛрдВрдб рдХрд┐рдпрд╛ред рдФрд░ рдХреБрдЫ рдирд╣реАрдВ :)
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред
this.contentLoaded.next ();
рдХрд╛рдо рдирд╣реАрдВ рдХрд░
рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдкрд░ рд╣реА рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
???
рд╣рд╛рдп @ рдЬрд╝рд╛рд░рд┐рдирд╛рд░рд╛ ,
рдЬрдм рдЖрдк not working
, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ?
рдирдорд╕реНрддреЗ
рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ
@ рдЬрд╝рд░реАрдирд░рд╛ , рдХреНрдпрд╛ рдЖрдк рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдФрд░ ng-lazyload-image
( npm ls ng-lazyload-image
) рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП intersectionObserver
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рд╛рдп @philipgiuliani ,
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐
ng-lazyload-image
рдХреЗрд╡рд▓ рдпрд╣ рдЪреЗрдХ рдХрд░рддреА рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЫрд╡рд┐ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЬрдм рддрдХ рдХреЛрдИ рд╕реНрдХреНрд░реЙрд▓ рдЗрд╡реЗрдВрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддрдм рддрдХng-lazyload-image
рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛редрддреЛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ
ng-lazyload-image
рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рджреБрдирд┐рдпрд╛ рдмрджрд▓ рдЧрдИ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:ng-lazyload-image
рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдХ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЪрд┐рддреНрд░ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЙрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рд╣реИ)редрдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдорд┐рд▓рд╛?