У меня есть приложение, которое делает CRUD для Collection
of Models
. Для каждой модели всегда есть DisplayView
, которая всегда видна. Существует также EditView
, который отображается только при нажатии на соответствующий DisplayView
.
DisplayView
и EditView
отображаются внутри разных родительских представлений. Прямо сейчас я использую шаблон "агрегатор событий", чтобы сообщить моему приложению о рендеринге EditView
при нажатии DisplayView
. Шаблон, описанный здесь: http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/
При щелчке по одному из моих DisplayView
он запускает событие, которое прослушивает родительский элемент EditViews
. Когда он получает это событие, он отображает соответствующий EditView
на основе модели, для которой было запущено событие.
Это хорошо работает для большинства моих приложений, но особенно громоздко, когда я хочу, чтобы позиция изменения EditView
основывалась на абсолютной позиции связанного DisplayView
в моем приложении. Вместо того, чтобы DisplayView
контролировать положение EditView
, он вызывает событие "пожалуйста, переместите себя в эти координаты". Такое прямое общение не похоже на то, что должно транслироваться для всего приложения. Я начинаю сомневаться, что для моего случая я должен просто ссылаться на соответствующий EditView
как свойство каждого DisplayView
, а не развязывать их.
Проблема, как я уже сказал, заключается в том, что они отображаются внутри разных родительских представлений. DisplayViews
получают в HeaderView
, а EditViews
получают в ContentView
.
Как другие справляются с ситуациями вроде этого? EditView
в некотором роде относится к DisplayView
, но это не совпадает с тем, как структурировано мое приложение DOM. Предполагая, что я создаю прямую связь между каждыми EditView
и DisplayView
, как мне обрабатывать show/hide из EditView
? Будет ли DisplayView
также нужна ссылка на контейнер ContentView
, который он явно отобразит с помощью соответствующего EditView
в качестве параметра?