![]() |
|
||||||||||
|
|||||
|
[+4 06.05.14]
|
Собственно с прошлой темы по мвс, почитал статьи вник немного, уже даже переписал часть некого приложения. Но возник один архитектурный вопрос. У вида всегда есть ссылка на модель, при этом доступно изменение модели и получение данных соотв.
Рассмотрим такую ситуацию. Есть допустим 5 кнопок, все со своими айдишниками, кнопки создаются в виде и подписываются на клик мыши. По клику мы должны записать в модель айдишник кнопки. У нас есть 2 пути : 1. по парадигме - в контроллере слушать вид, и передавать данные в модель, после чего модель обновит вид. 2. по уму, изменить модель прям из вида, не запуская перекрестный механизм. Да я понимаю, что мвс - это лишь инструкция к написанию, но никак не шаблон, и интерпретировать можно как угодно, но все же товарищи проффи в этом деле, хочу узнать у вас, вы используете второй подход или ни в коем случае ?!
__________________
Марк Tween Последний раз редактировалось in4core; 29.03.2012 в 01:08. |
|
|||||
|
Цитата:
Кто этим будет заниматься, изначально ваши кнопки? ![]()
__________________
adobe AS3 manual |
|
|||||
|
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
вроде контроллер меняет модель и диспатчит об этом виду... *scratch*
|
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Контроллеру не надо ниче диспатчить вьюхе, да и он может не подписывать кнопки. просто используй его как прокси для модели. Вью обрабатывает клик, вызывает метод контроллера, в методе меняется модель. Такой подход полезен тогда, когда надо поменять (или использовать) данные нескольких моделей, при том, что такая логика сама по себе не является бизнес-логикой (зависит от данной реализации представления) и ее присутствие в модели по этому не логично.
|
|
|||||
|
[+4 06.05.14]
|
anmelegov - это первый путь , точнее парадигма мвс, и я понимаю, что делать можно все что угодно подстраивая парадигму под себя, но вопрос звучал очень конкретно :
Товарищи ПРОФФИ - второй путь нормальная практика или полный [x] ? Просто в данном примере я не вижу ни ОДНОГО за делать перекрестный запрос, создавать кастом эвент с параметром и т.п. , когда достаточно написать model.buttonId = 1 Добавлено через 7 минут Цитата:
Вью обрабатывает клик - ДА , получается такая схема : view - > onCLick - dispatchEvent( new CustomEvent ( NEW_ID , buttonId ) controller - > addEventListener( CustomEvent.NEW_ID , onId ) - > onId - _model.buttonId = 1 model - > dispatchEvent('changeID') view - > onChangeId ( профит ) Ужасно! Ведь проще view - > onCLick - _model.buttonID = 1; view - > onId ( профит ) Вид установка айди - > контрол получение айди , запись в модель, запуск сервера с этим айди ( да да, айди надо сохранить, а не просто пускануть сервер с ним ) - > получение ответа от сервера , запись в модель - > обновление вида. А так если такой структуры нет, можно и напрямую видимо менять...
__________________
Марк Tween Последний раз редактировалось in4core; 29.03.2012 в 01:43. |
|
|||||
|
Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
|
Тут поскольку пошло речь об бизнесс логике в контроллере , и еще про то как слышать собитие от вида в нем , кто то подскажет как реализовать последний в puremvc (notifications) ? я сейчас уже постепенно перехожу на Robotlegs и Parsley , но все же интересно . Я всегда всю логику писал в виде , и даже регистрировал и удалял виды и модельи в нем
))
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !! |
|
|||||
|
Я так не делаю потому что в моих приложениях больше одной модели, и некоторые из них - иерархически выстроены.
Таким образом, если мне надо передать рутовую модель по иерархии - я передаю не саму модель, а ограниченную интерфейсом, который даст доступ только к тем данным, которые можно изменять конкретному ребёнку. Если же мне надо передать модель из контроллера новосозданной вьюхе - я тоже передаю не саму модель, но лишь ограниченную интерфейсом like ISomeGetable. Да, это не обязательно, но в случае возникновения внезапных ошибок (особенно при совместной разработке) время поиска конкретного виновника стремится к нулю.
__________________
Дебаггер не предлагать |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Я вроде не по-арабски пишу...
Цитата:
Цитата:
Цитата:
А вот по поводу Вашей схемки - так опять же, постом выше я предлагал все несколько переиначить. Если Вам нужно решить конкретную задачу, аналогией которой является пример с кнопками - то пожалуйста, В Цитата:
|
|
|||||
|
Цитата:
Единственное отличие консольного приложении от AS3-приложения в том, что контроллер вынужден сам запрашивать данные из модели и отправлять их во view. Ну, это в простейшем случае. Можно самостоятельно написать механизм сигналов, который будет из модели отправлять сигналы об изменениях во view
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 497
|
Цитата:
Во этом варианте при грамотной реализации возникает куча плюсов - много highly reusable компонентов UI (они привязываются к совершенно абстрактным моделям), "декларативное" описание программы (вместо обработчика onClick ... есть действие doSomething привязанное к кнопке), при нормальной реактивной библиотеке - простота композиции "сложных" состояний UI. Ну и избавление от лишней сущности "контроллер" конечно же ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|