【问题标题】:Backbone.js parse optional page query string in routerBackbone.js 解析路由器中的可选页面查询字符串
【发布时间】:2013-10-05 15:58:03
【问题描述】:

我正在慢慢地将我的 django 实现转移到backbonejs 渲染。当backbonejs 渲染无法处理时,Django 被用作后备。这是由backbonejs 路由器使用以下代码处理的。

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

$(document).on("click", "a[href^='/']", function(event) { 
  if (!event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) { 
    var url = $(event.currentTarget).attr("href").replace(/^\//, "");
    var matched = _.any(Backbone.history.handlers, function(handler) { 
      if (handler.route.test(url)) { 
        return true;
      } 
    });

    if (matched) { 
      event.preventDefault();
      application.router.navigate(url, { trigger: true });
    } 
  } 
});

基本上,如果骨干路由器无法处理它将回退到 django 模板渲染。但我现在无法捕捉分页的页面。我定义了以下路由。

module.exports = Backbone.Router.extend({

  routes: {
    'set/(?page=:page)': 'list_set'
  },

  list_set: function(page) {
    // Do listing of set
  }
});

我希望带有set/?page=2 的网址由 Backbone.js 触发。但上述路线不匹配。什么路由模式可以让页面参数可选,同时让backbonejs处理路由?

【问题讨论】:

    标签: javascript django backbone.js backbone-routing


    【解决方案1】:

    使用的路由模式是正确的。发现问题出在html页面中定义anchor href的方式上。

    锚元素定义如下:

    <a class="page" href="?page=2" data-original-title="" title="">2</a>
    

    href 值为?page=2,以? 开头。但是事件侦听器希望仅在 href 以 / 开头的地方捕获锚的点击事件。因此它未能preventDefault!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 2020-10-15
      • 2016-07-06
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      相关资源
      最近更新 更多