2012-04-17 3 views
0

я следующий кусок кода из моего Backbone проекта:Backbone.js маршруты не перенаправляется

App.Controllers.Test = Backbone.Router.extend({ 
    routes: { 
    'test': 'test', 
    'help': 'help' 
    }, 

    help: function() { 
    console.log('help'); 
    }, 

    test: function() { 
    console.log('test'); 
    }, 

    initialize: function() { 
    console.log('init'); 
    } 
}); 


// ... 

new App.Controllers.Test() 

Но все, что я когда-нибудь в моей консоли init даже если вызвать URL с #test или #help
Кто-нибудь знает, чего не хватает?

ответ

4

Ваша функция инициализации всегда будет работать первой, так что ваш маршрутизатор будет экземпляра, но, возможно, вы не применяли истории, после того, как вы вызываете маршрутизатор вам нужна строка коды, как:

Backbone.history.start({pushState: true}) 

PushState если вы используете новые браузеры с историей api, так как вы вызываете свои маршруты с помощью хэша, вам может не понадобиться pushState.

Если ваш маршрутизатор присваиваются переменными маршруты, ваш код может выглядеть следующим образом:

var routes = new Backbone.Router.extend({...}); 

Backbone.history.start({pushState: true}); 
+0

Гоша, что это было! Спасибо за разъяснение, что мне нужно использовать 'Backbone.history' для этого :) –

+3

Рад, что я мог помочь! Еще один способ - убедиться, что ваш сервер может ответить на указанные вами маршруты, даже если это означает, что каждый маршрут сервера первоначально загружает один и тот же index.html, в противном случае вы можете получить много ошибок 404. – MrGrigg

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