Conversation
DmitryMakhnev
left a comment
There was a problem hiding this comment.
public/dist/scripts/dummy.js надо разбивать на компоненты, без разбития смотреть не буду
DmitryMakhnev
left a comment
There was a problem hiding this comment.
Первая и самая важная проблема в связке и выделении компонентов.
На лекциях мы обсуждали, что компоненты должны быть связаны событиями или работать от данных.
Разберите материалы лекций и мою реализацию дз в части связки компонентов
public/dist/scripts/Application.js
Outdated
| var counter = new Counter(itemsLeft); | ||
| var addTodo = new AddTodo(input, counter, list); | ||
|
|
||
| var showAll = document.getElementsByClassName('filter')[0]; |
There was a problem hiding this comment.
Ищем внутренности компонента перед тем как его заинитить
public/dist/scripts/Application.js
Outdated
| var active = document.getElementsByClassName('filter')[1]; | ||
| var clearCompleted = document.querySelector('.js-todos-actions-bar_clear-completed'); | ||
|
|
||
| var todoActionBar = new TodoActionBar(completed, active, clearCompleted, counter, showAll); |
public/dist/scripts/Application.js
Outdated
|
|
||
| var input = document.querySelector('.todo-add_input'); | ||
| var list = document.querySelector('.todo-list'); | ||
| var itemsLeft = document.getElementsByClassName('js-todos-actions-bar_counter')[0]; |
There was a problem hiding this comment.
Почему разные методы поиска элементов DOM?
|
|
||
| list.appendChild(templateResult.root); | ||
|
|
||
| templateResult.deleteLink.addEventListener( |
There was a problem hiding this comment.
Метод компонента добавления развешивает события на внутреннсти компонента айтема списка.
Нарушается инкапсуляция компонента списка.
| @@ -0,0 +1,100 @@ | |||
| var READY_MARK = "__ready"; | |||
|
|
|||
| function AddTodo(input, counter, list) { | |||
There was a problem hiding this comment.
Компонент добавления дирижирует списком.
Если надо будет подружить компонент с другим списком, надо будет всё переписывать (
| } | ||
| }; | ||
|
|
||
| this.showAll.addEventListener('click', function (e) { |
There was a problem hiding this comment.
На каждый фильт описана логика работы в лоб. Если произойдёт изменение количества фильтров, будет очень грустно(
| this.showAll.addEventListener('click', function (e) { | ||
| e.preventDefault(); | ||
|
|
||
| showAll.classList.add(ACTIVE_MARK); |
There was a problem hiding this comment.
Кейс с тремя фильтрами повторяется в каждом фильтре. Неужели не кажется не правильным писать руками одно и тоже более одного раза?
| showAll.classList.remove(ACTIVE_MARK); | ||
| active.classList.remove(ACTIVE_MARK); | ||
|
|
||
| var hidden = document.getElementsByClassName('todo-item'); |
There was a problem hiding this comment.
В каждом фильтре берём и запрашиваем все айтемы. Опять же нарушая все зоны ответсвенности
Добавил основной функционал. Без модулей.