@kikosko

Почему не работает сортировка по цене?

В методе sortProductsByPrice (sortOrder) сортировка не работает, когда я удаляю или добавляю продукты в dom при помощи слушателей(buttAdd.addEventListener,buttDelete.addEventListener), сортировка работает только для продуктов, находящихся в массиве this.products по умолчанию. То есть, сначала когда загрузилась таблица с дефолтными товарами, то при клике по ячейке "Price :" они сортируются в порядке возрастания, а после того как удаляю или добавляю новый товар, сортировка уже не работает.

Я понимаю что в методе "show()" перерисовывается таблица и слушатели не попадают уже на новые элементы. Тогда, я пробовал переместить всех слушателей с их переменными в метод show() (как я пониманию, это так же правильно по построению кода), но после этого, когда срабатывает buttAdd.addEventListener добавляется продукт, при следующем добавлении то количество, которое уже было добавлено и +1 (видно при втором добавлении и так дальше), а фильтр по цене, вообще перестал работать : ). Поэтому я вынес слушателей с их переменными из метода "show()"

Продукты сортируются, при клике на Price: th>

Помогите пожалуйста JsFiddle
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
SnaIP
@SnaIP
Front-end разработчик
у вас обработчик отрабатывает только 1 раз

document.addEventListener("click", (e) => {
    // Используйте e.target 
    shop.sortProductsByPrice(Product.SORT_ORDER_ASC);
    shop.show();
}, false);


Если e.target === (вашей ячейки) то перерисовывать таблицу и делать сортировку, дальше думаю разберетесь
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@balamyt92
; select * from users; --
Когда вы делаете show() вы убиваете priceFilter вместе с его подпиской на событие. Нужно заново подписаться ну или не убивать его.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы