简体   繁体   中英

Backbone non-default root url

I'm trying to integrate Backbone inside a PHP CMS .

The root url for my Backbone app is:

http://localhost/administrator/index.php?option=com_test&controller=product.list

I have setup my router like this:

var AppRouter = Backbone.Router.extend({
    routes: {
        '': 'test',
    }
});

var initialize = function () {
    var router = new AppRouter;

    router.on('test', function () {
        console.log('match');
    });

    Backbone.history.start({
        pushState: true,
        root: '/administrator/index.php?option=com_test&controller=product.list'
    });

    router.navigate('/', {trigger: true});
};

The navigate function is correctly called but the route never matches. I tried to add a trailing backslash in the root , but it doesn't not change anything.

The problem is that you should either add test method to Router like that:

var AppRouter = Backbone.Router.extend({
  routes: {
    '': 'test',
  },
  test: function(){
    console.log('test route');
  }
});

or listen to route:test event:

router.on('route:test', function () {
    console.log('match');
});

because Backbone.Router triggers routes names when matched with prefix route:

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM