DataTables Заказы возрастают дваждыJquery

Программирование на jquery
Ответить
Anonymous
 DataTables Заказы возрастают дважды

Сообщение Anonymous »

Я использую history.pushstate /

Код: Выделить всё

history.replaceState
Чтобы сохранить состояние упорядочения таблицы (с Serverside Обработка и Ordermulti установить на false ) каждый раз, когда пользователь нажимает A . Впоследствии я использую .on ("popstate") для восстановления сохраненного упорядочения. Закажите во второй раз, когда пользователь снова заказывает в одном и том же столбце (то есть таблица перерисована, но упорядочение не меняется). Обратите внимание, что когда восстановленное упорядочение спускается, оно будет переупорядочиваемым, как и ожидалось при упорядочении в одном столбце. Lang-Js PrettyPrint-Override ">setTableState = function() {
let state = history.state, url = "/"+location.pathname.split("/")[1]+"/",
order = myTable.order();

if (state) state["sort"] = {};
else state = { "sort": {} };

if (order.length && order[0][1]) {
state["sort"]["name"] = myTable.columns(order[0][0]).init()[0].name;
state["sort"]["dir"] = order[0][1];
url += "sort:" + (state["sort"]["dir"] == "desc" ? "-" : "") + state["sort"]["name"] + "/";
}

if (url == location.pathname) history.replaceState(state, ""); // Prevent duplication of history item
else history.pushState(state, "", url);
}
< /code>
Сохранение и восстановление упорядочения: < /p>
$(document).ready(function() {
// Needs to be done this way to ensure the event only fires on manual ordering by the user.
// The click event will fire BEFORE the ordering takes place, so we need the .on("order.mc") event to capture the new order.
$(myTableId + " th").on("click", function() {
myTable.on("order.mc", function() {
myTable.off("order.mc");
setTableState();
});
});

$(window).on("popstate", function(e) {
if (history.state && "sort" in history.state && !jQuery.isEmptyObject(history.state["sort"])) {
myTable.order([{ name: history.state["sort"]["name"], dir: history.state["sort"]["dir"] }]);
}
else myTable.order(defaultSort);
myTable.draw();
});
});
< /code>
Поскольку он работает правильно, когда восстановленный порядок находится в направлении убывания (то есть он изменится на неупорядоченное состояние при переупорядочке в том же столбце), это похоже на ошибку с самими данными? /п>

Подробнее здесь: https://stackoverflow.com/questions/794 ... ding-twice
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»