์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ ๋ ํญ์ ๋ช ์ด๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๊ณ ๊ณต๋ฐฑ์ด ํ์๋๋ฏ๋ก ๋ก๋ ํ ์คํธ๋ฅผ ํ์ํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
+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; }
}
๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํํฐ ๋๋ ์ด๋ฅผ ๋ง์ํ์๋๊ฑด๊ฐ์?
์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ๋ ๋ก๋ฉ ํจ๊ณผ์ธ ๊ฒฝ์ฐ getData() ํจ์๋ฅผ ํธ์ถํ ๋ ๋ก๋ฉ ๋ถ์ธ ์ธํธ์ ํจ๊ป ngAnimate ๋ฐ CSS๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ํ ์ด๋ธ์ CSS ํด๋์ค๋ฅผ ์ถ๊ฐํ์ญ์์ค.
๊ทธ๋ฆฌ๊ณ CSS์ ์๋: