javascript – Backbone.js路由器混乱(pushState:true,尾随斜杠)

我正在使用Backbone的路由器与pushState:true来处理我的网站的网址. URL的示例包括:

> http://domain.com/John
> http://domain.com/John/
> http://domain.com/John/photos
> http://domain.com/John/my-latest-photos-2012

问题:当用户转到http://domain.com/John/时,执行预期的功能照片.但是当用户没有斜杠时转到http://domain.com/John时,没有任何反应;我的猜测是root中定义的尾部反斜杠阻止了这一点.

路由器

var AppRouter = Backbone.Router.extend({

    routes: {
        '': 'photos',
        'photos': 'photos'
    },

    viewing_username: $('#viewing_username').val(),  // eg: 'John'

    photos: function() {
        console.log('photos');
    }
});

var app = new AppRouter();
Backbone.history.start({
    pushState: true,
    root: '/' + app.viewing_username + '/'
});

jQuery的

$('a[data-toggle="tab"]').on('click', function(e) {
    app.navigate(e.target.getAttribute('href'), true);
});

第二次尝试

问题::这次我删除了root中的尾部反斜杠,http://domain.com/John现在触发了路由.这次问题出现在用户处于http://domain.com/John时(我认为浏览器将其视为名为John的页面),因此当点击链接(带有属性data-toggle =“tab”)时,网址将更改为http://domain.com/Johnphotos没有分开/.

我该如何解决这个问题?

最佳答案 我认为如果您将主干更新到最新版本,您的第二次尝试应该有效.看到这个讨论:

https://github.com/documentcloud/backbone/pull/1505

上述更改在8天前合并.

点赞