UI-сортируемый ведет себя странно с NG-модель - PullRequest
0 голосов
/ 26 июня 2018

В своем приложении AngularJS я создал ui-sortable со списком. Когда я пытаюсь упорядочить список по-другому, он действует как странность. Без ng-model у меня нет этой проблемы, но ui-sortable требует наличия ng-model, в противном случае в консоли будет выведена ошибка. Почему ng-модель создает эту проблему? Я неправильно создал объект моей модели?

Я воспроизвожу ошибку в this jsFiddle.

Для воспроизведения : перетащите Лорана в конец списка, и Лоран появится в середине, а не в нижней части, где он должен быть.

Я надеюсь, что кто-то может помочь мне с этой проблемой.

1 Ответ

0 голосов
/ 26 июня 2018

Кажется, это ошибка в ui-sortable, вы используете крайне устаревшую версию обеих библиотек. проверить исходный код на
https://github.com/angular-ui/ui-sortable/blob/v0.0.1/src/sortable.js и сравните это с вашей версией https://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui.js после некоторой отладки вы можете заметить, что

onStop = function(e, ui) {
            // digest all prepared changes
            if (ui.item.sortable.resort && !ui.item.sortable.relocate) {

              // Fetch saved and current position of dropped element
              var end, start;
              start = ui.item.sortable.index;
              end = ui.item.index();
              if (start < end)
                end--;

              // Reorder array and apply change to scope
              ui.item.sortable.resort.$modelValue.splice(end, 0, ui.item.sortable.resort.$modelValue.splice(start, 1)[0]);

            }
            if (ui.item.sortable.resort || ui.item.sortable.relocate) {
              scope.$apply();
            }
          };

удалите это, если оператор начало <конец, то конец - и это сработает. OnStop должен выглядеть так после </p>

 onStop = function(e, ui) {
            // digest all prepared changes
            if (ui.item.sortable.resort && !ui.item.sortable.relocate) {

              // Fetch saved and current position of dropped element
              var end, start;
              start = ui.item.sortable.index;
              end = ui.item.index();

              // Reorder array and apply change to scope
              ui.item.sortable.resort.$modelValue.splice(end, 0, ui.item.sortable.resort.$modelValue.splice(start, 1)[0]);

            }
            if (ui.item.sortable.resort || ui.item.sortable.relocate) {
              scope.$apply();
            }
          };

Я не рекомендую вносить изменения в код библиотеки вручную, скорее обновите код до новой версии, там может быть больше функций и исправлений ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...