pushState:true
サイトの URL を処理するためにBackbone のルーターを使用しています。URL の例は次のとおりです。
- http://domain.com/ジョン
- 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);
});
2回目の試行
問題::今回は末尾のバックスラッシュを削除しroot
、http ://domain.com/John がルートをトリガーするようになりました。今回の問題は、ユーザーがhttp://domain.com/John (ブラウザでは という名前のページとして扱われると思われますJohn
) にいるときに発生するため、リンク (属性 を持つdata-toggle="tab"
) をクリックすると、URL が次のように変更されます。http://domain.com/Johnphotos区切りなし/
。
この問題を解決するにはどうすればよいですか?