【发布时间】:2012-08-02 01:17:35
【问题描述】:
我正在使用带有pushState:true 的Backbone 路由器来处理我网站的网址。 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/时,会执行预期的函数photos。但是,当用户转到 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(我相信浏览器将其视为名为@987654336@的页面)时出现问题,因此当点击链接(带有属性data-toggle="tab")时,url更改为http://domain.com/Johnphotos 没有单独的/。
我应该如何解决这个问题?
【问题讨论】:
标签: javascript jquery backbone.js underscore.js