Oleg
То есть не воспринимая редактируемый грид как единый компонент?
Stepan
А чем в этом случае плохо использование единого контроллера? Так с ходу ничего в голову не приходит
Ale
То есть не воспринимая редактируемый грид как единый компонент?
есть единый компонент SpecificGridForSomeScreen, который в себе рендерит грид со строками, есть эти самые строки, в которых всякие onFirstAction onOtherAction. SpecificGridForSomeScreen мапит формат onFirstAction для строки в someApplicationLayerAction из приложения
Ale
итого вся задача единого контроллера простой мапинг, никакой логики в нем нет
Oleg
Ну то есть единый контроллер таки есть
Ale
а бизнес-логики в нем нет
Oleg
А куда же её положить то?
Ale
в модель?
Oleg
То есть делегируем бизнес-логику в модель
Andrew
в модель?
И в чем толк от такого перемещения?
Oleg
Ну тоже самое, только вызовы будут пробегать через контроллер в модель
Andrew
Разве модель не должна отвечать только за данные
Oleg
Да и с контроллером также
Oleg
Если логика будет там
Andrew
Но а на сколько хорошо, что мы в модель перенесли логику?
Ale
он привязан к структуре ивентов от view
Ale
Oleg
А если селекторами привязана?
Oleg
Или эвенты слушает?
Oleg
От вью
Oleg
Ну и в целом таки получается просто перепасовка
Ale
Oleg
Вью оповестила всех, кто знал как - тот подключился к прослушке
Oleg
Но это уже могут быть нюансы всяких там фреймворков и прочего
Ale
ну вот, контроллеру нужно знать про шину или еще какой-то интерфейс общения с view
Andrew
Т.е. у нас толстые модели, тонкие контроллеры?
Ale
и передавать это в модель
Ale
Andrew
Как избежать этих толстяков?)
Ale
декомпозицией
Oleg
Есть 2 подхода - тонкие модели и толстые контроллеры, и наоборот - толстые модели и тонкие контроллеры. Но есть конечно и веселее варианты.
Вью, отвечающие только за отображение и эвенты, вью-контроллеры, ловящие эвенты вью, знающие их структуру, занимающиеся первичной обработкой. Вью-модели, хранящие данные, адаптированые под вью. А также подписанные на полноценные модели и при изменении данных в моделе - получающие их, конвертирующие под вью и оповещающие вью. Ну и контроллеры верхнего уровня, хранящие конкретную бизнес-логику. А полноценные модели лишь как хранилище данных, общающиеся и с сервером.
Oleg
Подход с делением на 5 частей.
Ale
тонкие модели/толстые контроллеры это процедурщина
Ale
да, так тоже делают
Oleg
Где-то даже в википедии есть шутка про PHP и толстые модели
Oleg
Но суть сводится к тому что всякие onName методы стоит делать только если компонент на столько мал что по его названию уже понятно что будет происходить и мы точно уверены что компонент не разрастется
Oleg
Во всех остальных случаях лучше воспользоваться более подробным неймингом методов
Ale
лучше избегать остальных случаев
Oleg
Невозможно
Oleg
Утопия
Oleg
Я привел пример с гридом
Ale
так мы ж легко с ним справились?
Oleg
Нет
Ale
а в чем проблема, чет непонятно
Oleg
Там есть несколько кнопок
Ale
onFirstAction, onSecondAction
Ale
onEdit
Ale
onRemove
Ale
ну и че там
Oleg
А
Oleg
Ну так вот
Ale
так это вверху
Ale
внизу-то onClick
Oleg
Ну по сути и тоже самое
Oleg
😄
Oleg
Ну и в целом конечно можно, но странно делать у компонента onClick и в нем писать controller.onEdit или типа того когда можно сразу onEdit
Oleg
Или просто edit
Oleg
А также firstAction, secondAction и remove
Oleg
Потому что зачем нам on когда мы действие конкретное делаем
Oleg
А то что оное на клик по кнопке вызывается - это дело самой кнопки, а не нашей бизнес-логики
Ale
Ale
onClick возвращает ClickEvent какой-нибудь dom-node, а onEdit ивент с редактируемой сущностью
Oleg
Вот оно что
Oleg
Про разное чуть-чуть поговорили
Oleg
А хотя нет
Oleg
Зависит от уровня абстракции
Oleg
У нас есть кнопка удаления, мы жмем на неё, мы хотим получить удаление, допустим, строки, около которой находится эта кнопка. Кнопка может сама поймать эвент клика и сообщить другим что её нажали, а можем мы и сами ловить контроллером клик на компоненте и словить собственно объект эвента.
Oleg
От реализации зависит в общем-то
Ale
можем мы, но тогда нам нужен индекс строки или еще какой-то указатель в ивенте. Получать результат голого onClick чет как-то не очень
Oleg
Если кнопка как компонент сама может оповещать нашу эвент-систему о том что на неё кликнули - нам уже нужен конкретный нейминг
Oleg
Затянулся спор то 😄
Oleg
Надеюсь те 1549 человек что его читали - смогут найти в нем для себя что-то полезное
Ale
хыхы
Vlad
Vlad
ETOOMUCH
Oleg
😄
Dima
ребят, всем привет, я из криокамеры