2012-06-27 3 views
0

enter image description hereКакой объект должен отвечать за просмотр представлений в составном шаблоне?

Теперь, когда вы видели мою удивительную диаграмму uml, я могу продолжить работу с реальными вещами.

Скажем, лист в левой боковой панели получает действие, это действие хочет изменить что-то вне области видимости, которая несет ответственность за изменение основного вида?

Контейнер, отдельный диспетчер, боковая панелькомпозитная?

Это может быть слишком расплывчатым и/или субъективным, но я хотел бы узнать наиболее общий способ сделать это, когда он достигнет более глубоких уровней гнездования.

ответ

1

Там не один правильный ответ на это:

Одно из решений состоит в расширении EVENT-модель, представленную Backbone для создания агрегатора событий на уровне приложений (большой блоге об этой технике here) и перемешайте события из составного представления в агрегатор событий, а затем, имея MainView, слушая агрегатор событий для подходящих событий и соответствующим образом меняя его.

Другим решением было бы привязать элементы вашего compview к подходящим моделям и коллекциям, а действия вашего вида просматривать, изменять эти коллекции и элементы, а затем привязать ваш MainView к этим моделям и коллекциям, прослушивая события, которые они испускают. Немного сравним с решением выше.

Еще одно решение может состоять в том, чтобы иметь какой-то объект контроллера, который имеет методы, которые изменяют MainView и имеют метод compview, вызывающий методы контроллера всякий раз, когда MainView необходимо изменить.

Я думаю, что существует множество других способов общения между отдельными видами и элементами, но эти три хороши и, по крайней мере, на каком-то уровне позволяют поддерживать достойный уровень разделения в вашем коде. Конечно, вы можете пойти на их сочетание, например, с помощью агрегации событий для связи на уровне приложений, но контроллеров для уровня одного модуля, но это всего лишь идея.

0

Вы хотели бы проверить knockout.composite - http://danderson00.blogspot.com.au/2012/08/introducing-knockoutcomposite.html

Он использует шаблон PubSub, который может быть использован для разделения такой логики. Ваш MainView может подписаться на конкретное сообщение и выполнить переход. Сообщение может либо поступать непосредственно из CompView, либо из промежуточного «контроллера».

Смежные вопросы