javascript - 在 Backbone.js 中获取 URL 片段而不是哈希

标签 javascript backbone.js url-routing router

我为此纠结了很长时间。我将 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/

相关文章:

javascript - jquery 函数不适用于异步加载的 dom 元素

javascript - Marionette.js EmptyChildView

javascript - 如何将 d3 map 工具提示绑定(bind)到 Leaflet 的 popupPane?

Codeigniter 路由无限参数

codeigniter - 使用 CodeIgniter 索引函数的多个 URL 段

javascript - 如何消除 Angular 中的故障/延迟?

javascript - 使用 javascript 和 CSS 将一本书分页并将所有内容放在一页上

javascript - 如何异步删除多个文件?

javascript - 单击 'PUT' 按钮后请求不会变为 'Update',而是变为 'POST'

javascript - 如何设置 Angular 路线参数的可接受值?