Tabulator: руководство по реализации пользовательского режима сортировки / разбивки на страницы / фильтрации / редактирования - PullRequest
0 голосов
/ 27 апреля 2020

Я использую Tabulator в настольном приложении Electron с поддержкой Vue. js. Мое приложение может запрашивать довольно большие хранилища данных и отображать результаты в таблице Tabulator.

Я хочу сделать то же самое, что и модуль ajax, но вместо того, чтобы делать вызовы AJAX для получения новых данных Я хочу вызвать конкретный c API.

Я начинаю с сортировки. При щелчке по заголовку для сортировки я хочу вызвать пользовательский API с параметрами сортировки, а затем вернуть отсортированный фрагмент данных. Кажется, нет «родного» способа сделать это в модуле сортировки Tabulator api.

То же самое относится к нумерации страниц - отображать только ~ 100 результатов, если они разбиваются на следующую страницу, я делаю вызов API.

Каков наилучший способ добиться этого?

Могу ли я создать собственный модуль (составленный из модуля ajax) или выполнить sort и * 1012? * напрямую интегрироваться с модулем ajax?

1 Ответ

0 голосов
/ 08 мая 2020

Вы можете использовать обратный вызов ajaxRequestFun c для замены существующего ajax механизма запроса c вашим собственным логином c. Полную информацию об этом можно найти в Загружаемых данных, Ajax Документация

В приведенном ниже примере показана новая функция queryRealm используется чтобы заменить встроенную функциональность ajax.

Функция будет передана объектам url, config и params, которые будут содержать данные сортировки, фильтрации и разбиения на страницы, и должны возвращать обещание, которое разрешается массивом данные таблицы

function queryRealm(url, config, params){
    //url - the url of the request
    //config - the ajaxConfig object
    //params - the ajaxParams object

    //return promise
    return new Promise(function(resolve, reject){
        //do some async data retrieval then pass the array of row data back into Tabulator
        resolve(data);

        //if there is an error call this function and pass the error message or object into it
        reject();
    });
}

var table = new Tabulator("#example-table", {
    ajaxRequestFunc:queryRealm,
});
...