0

我正在尝试使用主干实现非常基本的分页和过滤支持

到目前为止,我的 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)数据时添加查询字符串参数?

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

4

1 回答 1

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);

于 2012-08-10T05:23:42.837 回答