@Wanie

Не могу понять почему так происходит?

Есть такой код, функция move вешается на ивент "click" у li элемента,
у каждого li элемента есть атрибут key который содержит индекс элемента в массиве, собственно нужно по клику опустить или поднять элемент на одну ступеньку выше в массиве, придумал костыль this.todos.move(index, index === 0 ? index += 1 : index -= 1); идеально работает когда в массиве 2 элемента, когда добавляется третий всё валится, вот код
move = (event) => {
    Array.prototype.move = function (from, to) {
      this.splice(to, 0, this.splice(from, 1)[0]);
    };

    if (event.target.nodeName === 'LI') {
      let elIndex = event.path[0].key;

      event.target.addEventListener('keyup', key => {
        if (key.keyCode === 40) {
          let index = elIndex;

          this.todos.move(index, index === 0 ? index += 1 : index -= 1);
          this.todos$.next(this.todos);
        }

        if (key.keyCode === 38) {
          let index = elIndex;

          this.todos.move(index, index === 0 ? index += 1 : index -= 1);
          this.todos$.next(this.todos);
        }
      });
    }
  }
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 1
NightmareZz
@NightmareZz
Нищий разработчик из Симферополя
Не работает - и слава богу. Потому что говнокод. Менять прототип массива в функции, которую вешаешь на onclick - это что-то с чем-то.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы