Ответ 1
Как я вижу это, нужно разделить проблемы:
- контроллер фактически выполняет работу (сбор данных, стимулирование представления, отображение их в регионах и т.д.) и может обновлять URL-адрес для отражения состояния приложения (например, отображаемого содержимого).
- маршрутизатор просто запускает действие контроллера на основе URL-адреса, введенного в адресную строку
Таким образом, если вы находитесь на начальной странице своего приложения, он должен работать нормально, не требуя каких-либо маршрутизаторов: ваши действия (например, нажатие на запись в меню) просто запускают различные действия контроллера.
Затем вы добавляете на маршрутизатор сообщение "если этот URL-адрес вызывается, выполните это действие контроллера". И внутри вашего контроллера вы обновите отображаемый URL с помощью navigate("my_url_goes_here")
. Обратите внимание, что вы не проходите trigger: true
.
Для получения дополнительной информации просмотрите сообщение в блоге Derick http://lostechies.com/derickbailey/2011/08/28/dont-execute-a-backbone-js-route-handler-from-your-code/ (параграф "Момент AHA!" в отношении маршрутизатора. Обозначает второй аргумент")
Я также затронул тему более подробно в бесплатном предварительном просмотре моей книги о Marionette. См. Стр. 32-46: http://samples.leanpub.com/marionette-gentle-introduction-sample.pdf