backbone.js управляет основными подробными представлениями и историей - PullRequest
3 голосов
/ 14 февраля 2012

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 01 мая 2012

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

Кроме того, централизованный диспетчер событий оказывается полезным в этой схеме.

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

...