Ng-table: ๋กœ๋”ฉ ํšจ๊ณผ

์— ๋งŒ๋“  2015๋…„ 10์›” 14์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: esvit/ng-table

์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•  ๋•Œ ํ•ญ์ƒ ๋ช‡ ์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ณ  ๊ณต๋ฐฑ์ด ํ‘œ์‹œ๋˜๋ฏ€๋กœ ๋กœ๋“œ ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

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

ํ•„ํ„ฐ ๋”œ๋ ˆ์ด๋ฅผ ๋ง์”€ํ•˜์‹œ๋Š”๊ฑด๊ฐ€์š”?

์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ๋กœ๋”ฉ ํšจ๊ณผ์ธ ๊ฒฝ์šฐ getData() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋กœ๋”ฉ ๋ถ€์šธ ์„ธํŠธ์™€ ํ•จ๊ป˜ ngAnimate ๋ฐ CSS๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

settings.getData = function (params: ng.ngtable.ITableParams): ng.IPromise<Array<T>> {
                    self.isLoading = true;
                    return self.itemsFunction(self.specification).then((result: IGridItemWrapper<T>): Array<T> => {
                        self.setItems(result.Items);
                        self.isLoading = false;
                        params.total(result.Count);
                        return result.Items;
                    }).catch((error) => {
                        self.isLoading = false;
                    });
};

๊ทธ๋Ÿฐ ๋‹ค์Œ ํ…Œ์ด๋ธ”์— CSS ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

<table ng-table="plc.tableParams" ng-class="{'loading': plc.isLoading}">

๊ทธ๋ฆฌ๊ณ  CSS์˜ ์ƒ๋Œ€:

.loading-remove {
    transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
}
.loading,
.loading-add.loading-add-active {
    opacity: 0.5;
    //animation: blinker 0.5s cubic-bezier(.5, 0, 1, 1) infinite alternate;  
}
.loading-remove.loading-remove-active {
    opacity: 1;
}
<strong i="13">@keyframes</strong> blinker {  
    from { opacity: 1; }
    to { opacity: 0.5; }
}

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

+1, ์ด ๊ธฐ๋Šฅ๋„ ์›ํ•ฉ๋‹ˆ๋‹ค.

+1

+1

+1

+1

๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•  ๋•Œ ๋ง‰ํžˆ๋Š” ๋Š๋‚Œ์ด ๋“ญ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํ•„ํ„ฐ ๋”œ๋ ˆ์ด๋ฅผ ๋ง์”€ํ•˜์‹œ๋Š”๊ฑด๊ฐ€์š”?

์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ๋กœ๋”ฉ ํšจ๊ณผ์ธ ๊ฒฝ์šฐ getData() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋กœ๋”ฉ ๋ถ€์šธ ์„ธํŠธ์™€ ํ•จ๊ป˜ ngAnimate ๋ฐ CSS๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

settings.getData = function (params: ng.ngtable.ITableParams): ng.IPromise<Array<T>> {
                    self.isLoading = true;
                    return self.itemsFunction(self.specification).then((result: IGridItemWrapper<T>): Array<T> => {
                        self.setItems(result.Items);
                        self.isLoading = false;
                        params.total(result.Count);
                        return result.Items;
                    }).catch((error) => {
                        self.isLoading = false;
                    });
};

๊ทธ๋Ÿฐ ๋‹ค์Œ ํ…Œ์ด๋ธ”์— CSS ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

<table ng-table="plc.tableParams" ng-class="{'loading': plc.isLoading}">

๊ทธ๋ฆฌ๊ณ  CSS์˜ ์ƒ๋Œ€:

.loading-remove {
    transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
}
.loading,
.loading-add.loading-add-active {
    opacity: 0.5;
    //animation: blinker 0.5s cubic-bezier(.5, 0, 1, 1) infinite alternate;  
}
.loading-remove.loading-remove-active {
    opacity: 1;
}
<strong i="13">@keyframes</strong> blinker {  
    from { opacity: 1; }
    to { opacity: 0.5; }
}

๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

zeeshanhanif picture zeeshanhanif  ยท  5์ฝ”๋ฉ˜ํŠธ

Nagendra1402 picture Nagendra1402  ยท  3์ฝ”๋ฉ˜ํŠธ

batjko picture batjko  ยท  3์ฝ”๋ฉ˜ํŠธ

esvit picture esvit  ยท  37์ฝ”๋ฉ˜ํŠธ

alienriquebm picture alienriquebm  ยท  6์ฝ”๋ฉ˜ํŠธ