ERS。
我正在尝试实现我的自定义集合,其中我覆盖了fetch方法。稍后我将使用此集合来扩展我的Backbone集合。
var BaseCollection = Backbone.Collection.extend({
fetch: function (options) {
options = options || {};
if (!options.headers) {
options.headers = {
'Content-type': 'application/json',
'Accept': 'application/json',
'Authorization' : "Basic: user:password"
};
}
options.reset = true;
console.log('I am extended fetch method');
return Backbone.Collection.prototype.fetch.call(this, options);
}
});
var ShipsCollection = BaseCollection.extend({
url: 'http://localhost:3000/v1/ships',
model: Ship
});
但是当我为我的收藏品调用fetch时,我看不到标题被发送到服务器:
var shipsCollection = new ShipsCollection();
shipsCollection.fetch();
如何扩展fetch以发送自定义标题 ?我不想overwrite sync。
答案 0 :(得分:2)
正如你可以从@nikoshr在评论中分享的fiddle看到的那样,代码似乎有效。
但是,如果options.headers
存在,您的代码将无效。我建议修改代码如下:
fetch: function(options) {
options = options || {};
var custom = {
'Content-type': 'application/json',
'Accept': 'application/json',
'Authorization': "Basic: user:password"
};
options.headers = options.headers ? _.extend(options.headers, custom) : custom;
options.reset = true;
return Backbone.Collection.prototype.fetch.call(this, options);
}
答案 1 :(得分:0)
在我的情况下,它是一个AdBlock插件。当我删除它一切都很顺利。