我在这方面已经挣扎了很长时间。我正在使用Backbone.js和Require.js。我试图告诉Backbone根据当前的URL(不是哈希)显示特定的视图。我的代码如下所示:
define(['jquery','underscore','backbone', 'views/manage_pages'], function($, _, Backbone, ManagePages) {
var AppRouter = Backbone.Router.extend({
routes:{
'/new_page': "showPageForm",
'/edit_page': "showPageEditForm",
'*actions': "showPageForm"
},
});
var initialize = function(){
appRouter = new AppRouter;
appRouter.on("route:showPageForm", function(){
console.log('hej');
});
appRouter.on("route:showPageEditForm", function(){
console.log('ho');
});
var page_form = new ManagePages();
Backbone.history.start();
}
return {
initialize: initialize
}
});
所以基本上当用户转到http://example.com/new_page时,它应该记录<code>hej</code>
,当他转到http://example.com/editpage时,它应该记录<code>ho</code>
。我不知道如何实现这一点,即使有可能。任何人都可以帮助我吗?
答案 0 :(得分:8)
您可以使用Backbone对HTML5 push-state的支持,默认情况下使用URL路径(而不是散列片段)。只需在调用history.start
时将其指定为选项:
Backbone.history.start({ pushState: true });
(请注意,如果您的应用程序位于域下的子路径中,那么您可以告诉Backbone将其用作根目录 - Backbone.history.start({pushState: true, root: "/myapproot/"})
- 尽管看起来这不是您的关注点情况)。