Как отключить историю магистрали, но разрешить маршрутизацию на основе хэшей?

Скажем, я делаю следующее:

  • Щелкните ссылку на главной странице (/) и перейдите к /posts/1.
  • Инициировать событие и перейти к магистральному маршруту /posts/1/#/1/edit
  • я нажимаю назад

Мне нужно сделать так, чтобы пользователь возвращался на домашнюю страницу (/), а не на /posts/1.

Поэтому мне нужно разрешить работу магистральных хеш-маршрутов, но не изменять историю. Лично я бы предпочел сохранить историю, но это требование проекта.


person Chris Gaunt    schedule 18.02.2012    source источник


Ответы (1)


В последней версии Backbone (0.9.x) есть возможность инициировать маршрут, но не добавлять его в историю.

См. раздел Backbone.Router#navigate для параметра replace:true.

По сути, просто вызовите .navigate на вашем маршрутизаторе с помощью trigger:true (чтобы активировать маршрут) и replace:true (чтобы предотвратить его попадание в историю)

app.navigate('posts/1/edit',{trigger:true, replace: true});

Вот jsfiddle, показывающий это в действии: http://jsfiddle.net/7Z6ju/1/

  • Нажмите «Опубликовать 1», чтобы перейти на страницу «Опубликовать 1».
  • Затем нажмите «Изменить», чтобы перейти на страницу редактирования.
  • Затем нажмите кнопку «Назад» — вы должны вернуться домой.
person Edward M Smith    schedule 18.02.2012