2012-02-14 4 views
3

У нас есть приложение Backbone.js, которое довольно нормально в том, что вы нажимаете на элемент меню, вы получаете сетку элементов, вы нажимаете на элемент в сетке, сетку скрывается, и вы видите форму, вы сохраняете или отменяете форму, и форма уничтожается, а сетка отображается и обновляется.backbone.js управление основными деталями просмотров и истории

Это немного сложнее, чем это, хотя в нем есть разные части приложения, из которых вы можете получить конкретную форму, а иногда у вас есть сетка -> форма -> другая форма, и вам нужно вернуться к первой форме, а затем к сетке. Это не волшебник, это всего лишь несколько сложных форм, и я действительно не хочу жестко кодировать «корневой вид» или палитру в представлении.

Так что мой вопрос/вопрос в том, что я не могу понять, как его интегрировать с маршрутизатором Backbone. У меня все в порядке с помощью только вызовов ajax и все, кроме необходимости функциональности кнопок с обратной связью. Я смотрю, что у меня есть объект или модель состояния, со стеке просмотров на нем, и когда вы нажимаете «Отменить», он уничтожает форму и всплывает предыдущее представление.

Это, однако, не позволит закладок, потому что вам нужно создать стек, выполнив навигацию по этому приложению, и что если они не нажмут «Отмена» (которая уничтожает представление и выталкивает стек), но затем нажмите ваш на среднем экране, но третий вид все еще находится в стеке.

Что бы я хотел сделать, это иметь URL-адрес (я использую MVC на заднем конце, поэтому было бы неплохо использовать URL-адрес контроллера/action/id) # usergrid/list then # usergrid/list/user/addupdate/3, затем # usergrid/list/user/addupdate/3/someothercontroller/someotheraction/4

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

Любой опыт или понимание этого было бы действительно оценено по достоинству.

ответ

0

Я наткнулся на ту же проблему. Найден ничего лучше, чем маршруты регулярного выражения (которые, на удивление, поддерживаются Backbone). То есть вместо routes: { 'some-form': '/showThatForm' } используйте routes: { new RegExp("(.+?)/some-form$"): 'showThatForm' } или что-то в этом роде.

Также centralized event dispatcher оказывается полезным в этой схеме.

Возможно, это не лучшее решение - но это сработало для меня.

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