Ng-lazyload-image: ๊ฐ€๋กœ ์Šคํฌ๋กค ionic2

์— ๋งŒ๋“  2017๋…„ 05์›” 30์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: tjoskar/ng-lazyload-image

๋‹ค์Œ์€ ๊ฐ€๋กœ ์Šคํฌ๋กค์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

            <ion-scroll scrollX="true" #lazyContainer>
                <!--<img class="thumbnail-avatar" *ngFor="let item of items" src="http://placehold.it/350x150">-->
                <img class="thumbnail-avatar-square spacer" *ngFor="let item of recent"
                     (click)="tapped(item)"
                     [scrollObservable]="lazyContainer.ionScroll"
                     [lazyLoad]="item.avatar">
            </ion-scroll>

image

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ scrollTarget์„ scroll._scrollContent.nativeElement

์•„๋ž˜ ์ „์ฒด ์ฝ”๋“œ

`` javascript <ion-scroll scrollX="true" direction="x" #scroll1> <div class="item" margin *ngFor="let item of newItems" (click)="goToItemPage(item)"> <img src="./assets/imgs/placeholder.png" [lazyLoad]="item.photoThumb?.url()" [scrollTarget]="scroll1._scrollContent.nativeElement" /> <div text-center text-wrap> <p no-margin>{{ (item.shortName || item.name) | excerpt:17 }}</p> </div> </div> </ion-scroll>

๋ชจ๋“  7 ๋Œ“๊ธ€

์•ˆ๋…•,

lazyContainer.ionScroll ๋Š” ์–ด๋–ค ์ด์œ ๋กœ ์„ธ๋กœ๋กœ ์Šคํฌ๋กคํ•  ๋•Œ๋งŒ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ionScroll ๊ฐ’์„ ์ธ์‡„ํ•˜์—ฌ ์Šคํฌ๋กคํ•  ๋•Œ ๊ฐ’์ด ๋ฐฉ์ถœ๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

<ion-scroll scrollX="true" #lazyContainer>
  <img class="thumbnail-avatar-square spacer" *ngFor="let item of recent"
    (click)="tapped(item)"
    [scrollObservable]="lazyContainer.ionScroll"
    [lazyLoad]="item.avatar">
  {{ lazyContainer.ionScroll | async | json }}
</ion-scroll>

@kodeine ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฌ์‹ญ์‹œ์˜ค.

์•ˆ๋…•ํ•˜์„ธ์š”,

๋จผ์ €... @tjoskar ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Ionic 3.9.2์—์„œ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์˜จ ์Šคํฌ๋กค๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ async/json ํŒŒ์ดํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ionScroll์˜ ๊ฐ’์„ ์ธ์‡„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”๋ฐ null์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์ด์˜จ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์—…๋ฐ์ดํŠธ: ๋‚˜๋Š” ์ž‘์—… ์˜ˆ์ œ์™€ ๋™์ผํ•œ ๊ฒƒ์„ ์‹œ๋„ํ–ˆ๊ณ  ๋˜ํ•œ ionScroll์ด null์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ scrollTarget์„ scroll._scrollContent.nativeElement

์•„๋ž˜ ์ „์ฒด ์ฝ”๋“œ

`` javascript <ion-scroll scrollX="true" direction="x" #scroll1> <div class="item" margin *ngFor="let item of newItems" (click)="goToItemPage(item)"> <img src="./assets/imgs/placeholder.png" [lazyLoad]="item.photoThumb?.url()" [scrollTarget]="scroll1._scrollContent.nativeElement" /> <div text-center text-wrap> <p no-margin>{{ (item.shortName || item.name) | excerpt:17 }}</p> </div> </div> </ion-scroll>

์•ˆ๋…•ํ•˜์„ธ์š” @fmendoza ๊ฐ ํ–‰์ด ๊ฐ€๋กœ๋กœ ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•˜๊ณ  ์ด๋ฏธ์ง€๋ฅผ ์ง€์—ฐ ๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ์—ฌ๋Ÿฌ ํ–‰์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ฒซ ๋ฒˆ์งธ ๋กœ๋“œ ์‹œ ๋ณด์ด๋Š” ํ–‰๋งŒ ์ด๋ฏธ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
์ˆ˜์ง์œผ๋กœ ์Šคํฌ๋กคํ•˜์—ฌ ๋‹ค๋ฅธ ํ–‰์„ ๋…ธ์ถœํ•ด๋„ ์ด๋ฏธ์ง€ ๋กœ๋“œ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‚ด ์ด์˜จ ์ฝ˜ํ…์ธ ์˜ ์ˆ˜์ง ์Šคํฌ๋กค๊ณผ ๋‚ด ์ด์˜จ ์Šคํฌ๋กค์˜ ์ˆ˜ํ‰ ์Šคํฌ๋กค์—์„œ ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๋‘ ๊ฐœ์˜ scrollTargets์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์ด์˜จ ์Šคํฌ๋กค์šฉ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์ด์˜จ ํ•จ๋Ÿ‰์šฉ์ž…๋‹ˆ๋‹ค.
์นœ์ ˆํ•˜๊ฒŒ ๋„์™€์ฃผ์„ธ์š”

์ €๋Š” ์•„๋ž˜ ํ•ดํ‚น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ‰์œผ๋กœ ์Šคํฌ๋กค๋œ ๋ชฉ๋ก์ด ๊ธฐ๋ณธ ์ฝ˜ํ…์ธ ์˜ ์ˆ˜์ง ์Šคํฌ๋กค ๋ทฐํฌํŠธ ์™ธ๋ถ€์— ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
์ œ ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋“  ๋ชฉ๋ก์˜ ์ฒ˜์Œ 2๊ฐœ ํ•ญ๋ชฉ์ด ๊ธฐ๋ณธ ์ฝ˜ํ…์ธ ์˜ ์ˆ˜์ง ์Šคํฌ๋กค ๋‚ด์—์„œ ํ•ญ์ƒ ํ‘œ์‹œ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์Šคํฌ๋กค ์ปจํ…Œ์ด๋„ˆ๋ฅผ <ion-content #content> ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€ ๋ชฉ๋ก ํ•ญ๋ชฉ์€ ์ˆ˜ํ‰ ์Šคํฌ๋กค์˜ <ion-scroll scrollX="true" #recentScroll> ๋ฉ๋‹ˆ๋‹ค.

<ion-content #content>
        <!-- more ion-scrolls here -->
    <ion-scroll #recentScroll scrollX="true">
        <ng-container *ngFor="let subitem of recentItems; let i = index">
            <horizontal-item [item]="subitem" 
                                [scrollContainer]="content._scrollContent.nativeElement" 
                                (openItem)="showItemDetails($event, true)"
                    *ngIf="i < 2"></horizontal-item>
            <horizontal-item [item]="subitem" 
                                [scrollContainer]="recentScroll._scrollContent.nativeElement"
                                (openItem)="showItemDetails($event, true)"
                   *ngIf="i >= 2"></horizontal-item>
        </ng-container>
    </ion-scroll>
        <!-- more ion-scrolls here -->
</ion-content>
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰