我正在努力实现一个非常基本的分页&过滤支持骨干
到目前为止,我在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)数据时添加查询字符串参数?
或者你会推荐另一种方法吗?
答案 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);