Почему не работают события магистрального маршрута?
Может кто-нибудь объяснить, почему router.on("route:myTest", function(page) {});
не работает?
мой Backbone.Router
как следует:
var MyRouter = Backbone.Router.extend({
initialize: function(){
Backbone.history.start({ pushState:true, root:"/subdir/" });
},
routes: {
'' : 'start',
'base' : 'myTest',
'base/:name': 'myTest',
'base/:name/:skill': 'myTest',
'*default': 'defaultRoute'
},
start: function(){
alert('Chapter 5 route invoked');
},
defaultRoute: function(){
alert('Router does not handle this route');
},
myTest: function(name,book){
if(name !== undefined){
if(book !== undefined){
alert([name, 'is reading', book].join(' '));
}else{
alert('Saying hello to ' + name);
}
}else{
alert('Saying hello!');
}
}
});
Вот код на моей HTML-странице:
function showBook(name){
console.log('Show book ' + name);
router.navigate('book/' + name);
}
router.on("route:myTest", function(page) { showBook('TestBook'); });
1 ответ
Backbone.Router
не вызывает события только с названием маршрута (myTest
в этом случае). Если вы посмотрите на документы, то увидите, что маршрутизатор запускает route
, route:[name]
события, поэтому вы должны использовать следующее вместо:
router.on('route:myTest', function(){});
Это событие будет запущено, если маршрут соответствует base
, base/:name
, base/:name/:skill
что может или не может быть то, что вы ищете.