2

我已经为此苦苦挣扎了很长时间。我正在使用 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>。我不知道如何做到这一点,或者即使它是可能的。谁能帮我?

4

1 回答 1

8

您可以使用 Backbone 对HTML5 push-state的支持,它默认使用 URL 路径(而不是哈希片段)。只需在调用时将其指定为选项history.start

Backbone.history.start({ pushState: true });

(请注意,如果您的应用程序位于域下的子路径中,那么您可以告诉 Backbone 将其用作根目录Backbone.history.start({pushState: true, root: "/myapproot/"})-- 尽管在您的情况下看起来这不是问题。)

于 2012-11-17T10:37:40.057 回答