我为此纠结了很长时间。我将 Backbone.js 与 Require.js 一起使用。我试图告诉 Backbone 根据当前 URL(不是散列)显示特定 View 。我的代码如下所示:
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>
.我不知道如何做到这一点,或者即使有可能。谁能帮帮我?
最佳答案
您可以使用 Backbone 对 HTML5 push-state 的支持,它默认使用 URL 路径(而不是哈希片段)。只需在调用 history.start
时将其指定为选项即可:
Backbone.history.start({ pushState: true });
(请注意,如果您的应用程序位于域下的子路径中,那么您可以告诉 Backbone 使用它作为根 -- Backbone.history.start({pushState: true, root: "/myapproot/"})
——尽管在你的情况下看起来这不是问题。)
关于javascript - 在 Backbone.js 中获取 URL 片段而不是哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13429401/