Javascript Backbone.js(pushState:true,尾随斜杠)

Javascript Backbone.js(pushState:true,尾随斜杠),javascript,jquery,backbone.js,underscore.js,Javascript,Jquery,Backbone.js,Underscore.js,我正在使用主干网路由器和pushState:true来处理我网站的URL。URL的示例包括: 问题:当用户转到时,执行预期的功能photos。但是,当用户转到没有尾随斜杠的位置时,什么也不会发生;我的猜测是root中定义的尾部反斜杠阻止了这一点 路由器 var AppRouter = Backbone.Router.extend({ routes: { '': 'photos', 'photos': 'photos' },

我正在使用主干网路由器和
pushState:true
来处理我网站的URL。URL的示例包括:

问题:当用户转到时,执行预期的功能
photos
。但是,当用户转到没有尾随斜杠的位置时,什么也不会发生;我的猜测是
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);
});

第二次尝试 问题::这次我删除了
根目录中的尾部反斜杠,现在触发路由。这一次的问题是当用户在时(我相信浏览器会将其视为名为
John
)的页面),因此当单击链接(带有属性
data toggle=“tab”
)时,url会更改为,而不带单独的
/


我应该如何解决这个问题?

如果您将主干更新到最新版本,我认为您的第二次尝试应该会成功。见本讨论:


上述变化是8天前合并的。

虽然@shioyama的答案是正确的,但我经常尽可能使用通配符路由绕过这种奇怪现象

例如:

routes:
  'dashboard(/*subroute)': 'index'
当然,这对于很多应用程序来说是不可能的,但是,这在过去为我节省了时间