すべてのリンクを変換し、そこからexample.com/action
バックボーンexample.com/index.html#action
ルーターによって解析されます。
ただし、私の新しいページsignup/:inviteAuthHash
(例signup/9d519a2005b3dac8802d8e9e416239a1
)は機能していません。レンダリングするのはmyだけindex.html
で、ルーターのブレークポイントはどれも満たされていません。
.htaccess:
# not a file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# example.com/home => example.com/index.html#home
RewriteRule ^(.+)$ index.html#$1 [L,QSA]
router.js
var AppRouter = Backbone.Router.extend( {
routes : {
/* PAGES */
// beta
'request_invite' : 'request_invite',
'signup/:inviteAuthHash' : 'signup',
// Default
'*actions' : 'defaultAction'
},
/* PAGES */
// eta
request_invite : function() {
new BetaLayout;
new RequestInviteView;
},
signup : function(inviteAuthHash) {
// validate auth hash
if(!InviteRequest.isValidInviteAuthHash(inviteAuthHash))
return this.defaultAction();
else {
new BetaLayout;
new SignupView(SignupView);
}
},
// Default
defaultAction : function(actions) {
app_router.navigate('request_invite');
this.request_invite();
}
});
var initialize = function() {
app_router = new AppRouter;
$('a').live('click', function() {
var href = $(this).attr('href');
// only navigate to real links
if(href == undefined)
return;
// open in new window?
if($(this).prop('target') == '_blank')
return true;
app_router.navigate(href, {trigger: true});
return false;
});
Backbone.history.start({pushState: true});
};
return {
initialize : initialize
};