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'
当然,这对于很多应用程序来说是不可能的,但是,这在过去为我节省了时间