У меня есть приложение, которое делает 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 в качестве параметра?