#javascript #ajax #pagination #tabulator
#javascript #ajax #разбивка на страницы #табулятор
Вопрос:
У меня проблема с табулятором (4.9.1) и нумерацией страниц, когда я пытаюсь настроить его с помощью функции удаленной нумерации страниц и ajaxUrlGenerator, он никогда не переходит в функцию генератора, после изучения кода я заметил, что код tabulator выполняет следующее :
Tabulator.prototype._loadInitialData = function () {
var self = this;
if (self.options.pagination amp;amp; self.modExists("page")) {
self.modules.page.reset(true, true);
if (self.options.pagination == "local") {
if (self.options.data.length) {
self.rowManager.setData(self.options.data, false, true);
} else {
if ((self.options.ajaxURL || self.options.ajaxURLGenerator) amp;amp; self.modExists("ajax")) {
self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {
if (self.options.paginationInitialPage) {
self.modules.page.setPage(self.options.paginationInitialPage);
}
});
return;
} else {
self.rowManager.setData(self.options.data, false, true);
}
}
if (self.options.paginationInitialPage) {
self.modules.page.setPage(self.options.paginationInitialPage);
}
} else {
if (self.options.ajaxURL) {
self.modules.page.setPage(self.options.paginationInitialPage).then(function () {}).catch(function () {});
} else {
self.rowManager.setData([], false, true);
}
}
} else {
if (self.options.data.length) {
self.rowManager.setData(self.options.data);
} else {
if ((self.options.ajaxURL || self.options.ajaxURLGenerator) amp;amp; self.modExists("ajax")) {
self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {});
} else {
self.rowManager.setData(self.options.data, false, true);
}
}
}
};
использование ajaxURLGenerator с «локальной» конфигурацией позволяет корректно работать в удаленном режиме.
Но тогда он не выполняет прогрессивную нумерацию страниц и неправильно передает параметры в функции ajaxURLGenerator, вероятно, из-за механизма синтаксического анализа, который не вызывается в «локальном» режиме для данных :
Page.prototype.trigger = function () {
var _this81 = this;
var left;
return new Promise(function (resolve, reject) {
switch (_this81.mode) {
case "local":
left = _this81.table.rowManager.scrollLeft;
_this81.table.rowManager.refreshActiveData("page");
_this81.table.rowManager.scrollHorizontal(left);
_this81.table.options.pageLoaded.call(_this81.table, _this81.getPage());
resolve();
break;
case "remote":
case "progressive_load":
case "progressive_scroll":
_this81.table.modules.ajax.blockActiveRequest();
_this81._getRemotePage().then(function () {
resolve();
}).catch(function () {
reject();
});
break;
default:
console.warn("Pagination Error - no such pagination mode:", _this81.mode);
reject();
}
});
};
В конце он загружается, но все данные, когда сервер возвращает только список json, но он завершается ошибкой при получении объекта, ожидаемого для удаленной разбивки на страницы.
У кого-нибудь была такая же проблема с удаленной нумерацией страниц и ajaxURLGenerator? У кого-нибудь есть идея, как это решить, не изменяя библиотеку?
Заранее спасибо
Комментарии:
1. можете ли вы опубликовать ссылку на скрипку JS, которая демонстрирует вашу проблему, нам нужно посмотреть, как настроена ваша таблица, чтобы указать вам правильный ответ.
2. Привет и спасибо за ваш ответ, к сожалению, у меня возникли некоторые трудности с воспроизведением его на jsfiddle из-за ajaxUrl, но, по крайней мере, код должен быть идентичным. Рабочая версия на моем компьютере (разбивка на страницы не выполняется, но она начинает загружаться): jsFiddle локальная разбивка на страницы как удаленная Ожидаемая реализация на основе документации : jsFiddle ожидаемая конфигурация удаленной разбивки на страницы Если вам нужно больше данных или пример, работающий локально, скажите мне. Еще раз спасибо