Angularjs datatables - данные перезагружаются, когда пользователь нажимает на вторую страницу - PullRequest
0 голосов
/ 11 июня 2019

Может кто-нибудь помочь мне с перезагрузкой данных таблицы? Проблема в том, что у меня есть таблица и 50000 записей из моего вызова API. Он тратит слишком много времени на загрузку страницы, поэтому я пытаюсь перезагрузить данные, когда пользователь нажимает номер страницы. Например, на странице 1 загружаются 50 записей, затем загружаются еще 50 записей, когда пользователь нажимает на страницу 2, и так далее. Библиотека, которую я использовал, это https://l -lin.github.io / angular-datatables / archives / #! / ServerSideProcessing .

Моя идея в том, чтобы использовать запрос LIMIT и OFFSET в моем PHP-бэкэнде, а затем перейти к контроллеру angularjs. Используйте ajax для вызова моего бэкэнд-API и записи текущей страницы, а затем вернитесь к моему бэкэнду для второй страницы, чтобы вызвать еще 50 записей данных.

Мой код JS

var vm = this;
vm.dtOptions = DTOptionsBuilder.newOptions().withFnServerData(
    function (sSource, aoData, fnCallback, oSettings) {
        $http({
            method: 'POST',
            url: 'API from backend',
            data: {
                start: aoData[3].value,
                length: aoData[4].value,
                draw: aoData[0].value,
                order: aoData[2].value,
                search: aoData[5].value,
                columns: aoData[1].value
            },
            headers: {
                'Content-type': 'application/json'
            }
        })
        .then(function(result) {
            var records = {
                'draw': result.data.draw,
                'recordsTotal': result.data.recordsTotal,
                'recordsFiltered': result.data.recordsFiltered,
                'data': result.data.data
            };
            fnCallback(records);
        });
    }
)
.withDataProp('data') 
.withOption('processing', true)
.withOption('serverSide', true)
.withPaginationType('full')

Данные всегда нулевые, когда я проверяю на своем бэкэнде.

image

...