我需要添加一个身份验证标头,到目前为止,我有这个,但我被困在这里。
initialize: function(options) {
_.extend(this, _.pick(options, 'col'));
this.listenTo(this.model, 'change', this.render);
window.dispatcher.trigger('queryBox:close');
this.model.collectionName = this.col;
if (this.model.id) {
this.model.fetch();
} else {
this.renderNew();
this.delegateEvents();
}
},
之前没有使用骨干,我无法如何返回结果,因此骨干可以像第一个那样渲染它?
结果本身是正确的,只需将其传递给主干。在第一个版本中,它使用默认方式来执行此操作,但无法弄清楚如何手动执行此操作。
fetch: function() {
var self = this;
Backbone.ajax({
url: self.url(),
headers: {'Authorization':jwt}
})
.done(function(res){
console.log('Help')
})
.fail(function(jqXHR, textStatus) {
tiedotApp.notify('danger', 'Error loading document: ' + jqXHR.responseText, 8000);
})
},
答案 0 :(得分:2)
我不建议您更改fetch
的默认实现,因为可以使用 options
哈希简单地配置其行为。但是,如果你需要澄清一些事情。
model.fetch
使用jQuery.ajax()
与服务器进行互动,而传递给fetch
的所有选项也会传递给$.ajax()
(其中一些它们可以在中间件中重写,但不适用于你的情况。)
model.fetch
需要返回承诺,将其用于完成和失败的回调链。
您可以通过几种方式实施您的任务。
<强> 1。如果模型在一个地方获取:
然后你可以改变它:
model.fetch({
headers: {'Authorization':jwt},
success: function () { consoele.log("Help") ;},
error: function(jqXHR, textStatus, errorThrown) {}
});
<强> 2。如果模型在许多地方获取并且您需要干燥
以这种方式重写抓取:
fetch: function(options) {
options = options || {};
options.headers = options.headers || {};
options.header['Authorization'}] = jwt;
options.success = yourSuccessFunction;
options.error = yourErrorFunction;
return this.constructor.__super__.fetch.call(this, options);
},
这样你就不会破坏原生实现。