![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2007
Сообщений: 374
|
Допустим, вьювер должен реагировать на изменение 3х моделей, которые находятся непонятно где, например:
AppGlobal.model.resources.model1 AppGlobal.model.playground.user.item.model2 AppGlobal.model.model3 Для решения этой задачи вытащил из flex ChangeWatcher, но у него есть минус - при изменении имени какого-либо свойства из цепочки, он перестает работать, не ругаясь при этом. BindingUtils.bindSetter(this._setModel1, AppGlobal.model, ["resources","model1"], false,true); BindingUtils.bindSetter(this._setModel2, AppGlobal.model, ["playground","user","item","model2"], false,true); BindingUtils.bindSetter(this._setModel3, AppGlobal.model, ["model3"], false,true); Как вы решаете в целом проблему подписки на события таких моделей? |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 374
|
alatar, так не известно, создались ли модели или нет. Если бы была гарантия 100% существования нужного свойства нужной модели, то проблемы бы не возникало. Их создают другие контроллеры, никак с этим вьювером не связанные.
|
|
|||||
|
.
|
Подписываю представление(я) на события создания дочерних моделей в родительских моделях. Можно подписаться к общему узлу, имеющим в своих ветках нужных родителей. Событие добавления/удаления доставляется к этому узлу баблингом.
|
|
|||||
|
Цитата:
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 374
|
dimarik, а как баблинг реализуете в моделях? Своя событийная модель?
Если подписывать все на создание всего, особенно при сильных уровнях вложенности, можно здорово запутаться. alatar, (что тут писать, если нечего подписывать?).addEventListener(...) И в какой момент подписывать. |
|
|||||
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 374
|
alatar, я уже написал выше. Если всех родителей модели проверять на созданность, делая обработчики всех созданий, то можно получить такую нехилую структуру, что лучше подумать над другими реализациями. Это при глубоких уровнях вложенности.
|
|
|||||
|
Зачем обработчики? какая структура? Одна строчка, что бы подписаться на событие и одна функция, которая отдиспатчит его выше это уже нехилая структура?
Видимо я не до конца понимаю вашу проблему. |
|
|||||
|
.
|
Да, своя реализация, с помощью EventDispatcher'а. Почти своя, если учесть что DOM адоб реализовал только для дисплей-листа. Мой велосипед - конгломерат модернизации идей BloodHound'а и исследования поведения нативного EventDispatcher. Эта штука просто реализует GoF паттерн Composite. Хочу разродится в скором времени статейкой в своем бложике по этому поводу.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|