Почему не работают события магистрального маршрута?

Может кто-нибудь объяснить, почему 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 что может или не может быть то, что вы ищете.

Другие вопросы по тегам