Как вернуть порядок списка обратно к тому, который был до последнего изменения, если запрос AJAX не выполнен? - PullRequest
0 голосов
/ 20 февраля 2019

Я использую библиотеку JS Sortable с jQuery для выполнения запроса AJAX при изменении порядка в списке.Я делаю это следующим образом:

<ul id="items">
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
</ul>

<script type="text/javascript">
  $(document).ready(function() {
    var el = document.getElementById('items');

    Sortable.create(el, {
      onEnd: function (event) {
        var new_position = event.newIndex+1;

        $.ajax({
          type: 'PATCH',
          url: 'path/to',
          data: {'new_position': new_position},
          dataType: 'script'
        }).fail(function(jqXHR, textStatus, errorThrown) {
            // Revert the list order to how it was before the current sort started.
          });
      }
    });
  });
</script>

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

Как я могу сделатьчто?

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете клонировать узел списка с помощью ванильного метода JS cloneNode или jQuery clone и сортировать клонированный узел.Затем, в случае успеха, вы можете поменять оригинальный узел на клонированный.Или вы можете сделать это другим способом - получить узел, клонировать его, отсортировать оригинальный и заменить его на клонированный при сбое, однако я бы пошел с первым подходом (обмен на успех), так как вы ограничиваете число возможныхDOM меняется.Рекомендации:

...