在骨干中实施分页

时间:2012-08-10 04:52:48

标签: backbone.js pagination

我正在努力实现一个非常基本的分页&过滤支持骨干

到目前为止,我在Collection.url()函数中有类似的东西:

url: function() {
  var url = 'http://localhost:9000/wines';
  var query = '';

  if (this.filter)  query += '&filter=' + this.filter;
  if (this.order)   query += '&order='  + this.order;
  if (this.page)    query += '&page='   + this.page.toString();
  if (this.len)     query += '&len='    + this.len.toString();

  if (query) url += '?' + query.substring(1);

  return url;
},

你明白了

问题是,当我尝试创建(POST)或更新(PUT)项目时,查询字符串也会发送到浏览器...

在url函数中是否有某种方法来检测我发出的操作并仅在获取(GET)数据时添加查询字符串参数?

或者你会推荐另一种方法吗?

1 个答案:

答案 0 :(得分:0)

我找到了以下方法来做到这一点

我只是覆盖了fetch方法,如下所示:

initialize: function(options) {

  this._fetch = this.fetch;

  this.fetch = function() {
    options = {};
    options.url = 'http://localhost:9000/wines'

    data = {};
    if (this.filter) data.filter = this.filter;
    if (this.order) data.order = this.order;
    if (this.page) data.page = this.page;
    if (this.len) data.len = this.len;

    options.data = data;

    return this._fetch(options);
  }
},

我无法找到避免保存_fetch变量的方法,我尝试了

返回Backbone.Collection.fetch(options); 返回Backbone.Collection.prototype.fetch(options);

返回Wines.fetch(options); 返回Wines.prototype.fetch(options);

但它们似乎都不起作用......

- 修改

在主干页面上找到它:

返回Backbone.Collection.prototype.fetch.call(this,options);