2012-03-06 2 views
6

Я думаю, что мне не хватает основополагающих функций маршрутизации Магистральной сети.Магистральная сеть JS Маршрутизация не работает, как я ожидаю

Я строю приложение, и это выглядит примерно так:

file: app.js

App = {} 
App.nav = new Backbone.Router; 
require('app/controller'); 

file: controller.js

App.nav.route('home', 'home', function() { 
    console.log("Home Activated"); 
}); 

App.navigate('home'); 

На данный момент браузер изменяет URL в адресной строке /home, но ничего не происходит, и я не получаю сообщение консоли Home Activated.

Я пробовал использовать свой собственный класс маршрутизации (то есть Backbone.Router.extend({})), но я действительно не вижу в этом смысла, поскольку мне все еще нужно его инициализировать, и я хочу использовать центральную историю/навигацию в своем приложении, все модули/контроллеры добавляют к ней маршрутизацию, а не создают маршрутизатор для каждого контроллера.

Что я делаю неправильно?

ответ

15

http://documentcloud.github.com/backbone/#Router-navigate

Из документации:

Если вы хотите, чтобы также вызвать функцию маршрута, установите параметр запуска в действительности.

Но поскольку OlliM написал (а), вам необходимо активировать историю первым!

Таким образом, ваш ответ должен быть:

Backbone.history.start(); 
App.nav.navigate('home', {trigger: true}); 

редактировать: забыл поставить «NAV»

+1

'{триггер: истинно}' не является частью решения здесь. Магистраль по умолчанию запускает: true, если параметры не указаны. Вот фрагмент кода: 'navigate: function (фрагмент, опции) { if (! History.started) return false; if (! Options || options === true) options = {trigger: !! options}; ' – Kinergy

+0

У вашей ссылки 404'd. – NuclearPeon

1

Я просто хочу, чтобы указать на это, как это спасло мне мир боли и страдания.

Если вы маршрутизации пользовательской страницы, такие как

Backbone.router.navigate('/some/page'); // does not work 

И это, кажется, не работает. Добавить завершающую «/»

Backbone.router.navigate('/some/page/'); // works 

Это стоило мне несколько часов поиска неисправностей ...

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