Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   ng-table и getData (https://javascript.ru/forum/angular/71449-ng-table-i-getdata.html)

-VenoM- 19.11.2017 19:40

ng-table и getData
 
Вопрос в следующем.
Сделал я табличку с группами вроде этой:
http://plnkr.co/edit/M8BcStInfSaSEaq6UVN7?p=preview

Но вылезла проблема, что при данных в сотни ячеек начинаются тормоза при поиске, сортировке, сворачивании-разворачивании групп.

Решил сделать изменение данных через $defer (до этого было через dataset как в примере). Без групп работает, с группами - никак. Смотрел в отладчике - в первом случае NgTableParam.data уже сортирована согласно group.

$scope.tableParams = new NgTableParams({
                        group: 'Type',
                        page: 1,
                        count: 5,

                        groupOptions: {
                            isExpanded: false
                        }
                    },
                        {
                        total: $scope.globalVars.broodLog.length,
                        getData: function ($defer) {
                            this.data = $defer.sorting() ? $filter('orderBy')($scope.globalVars.broodLog, $defer.orderBy()) : $scope.globalVars.broodLog; // как здесь сделать структуру данных с группами???
      
                        }
                    });


В общем, у кого какие идеи как ускорить сортировку, поиск.

destus 20.11.2017 10:22

-VenoM-,
Пагинация - одно из возможных решений тормозов. Вместо того чтобы рендерить 100500 DOM объектов, отрисовывают только нужное количество на странице (10,25, ...). Далее переход по страницам и обновление дерева. $defer подходит в случае асинхронного получения данных. В Вашем случае, как я понял, данные приходят сразу все. Смотреть сюда

-VenoM- 23.11.2017 13:42

Да, это самый такой вариант. Но вопрос в том, что pagination если в лоб применяется к списку groups, а не ко всем объектам таблички.
Допустим, в моём примере
count: 5,

Т.е. на каждой страничке будет по 5 групп. Но на содержимое групп count уже не реагирует. В общем, попытаюсь парсить страницы в ручном режиме, ибо примеров подобных не находил.


Часовой пояс GMT +3, время: 16:44.