Backgrid.js および Backbone-pageable でページング機能を使用しているときに、リクエストでカスタム ヘッダーをプッシュするのに問題があります。
最初のリクエストは、xhr.setRequestHeader を使用して設定されたカスタム ヘッダーでデータを正しく取得しています。
バックグリッドからの後続のすべてのリクエストでカスタム ヘッダーも送信するにはどうすればよいですか?
var MyCollection = Backbone.PageableCollection.extend({
url: "http://api.myurl.com",
// Initial pagination states
state: {
pageSize: 10,
sortKey: "updated_at",
order: 1
},
queryParams: {
firstPage: 0,
totalPages: null,
totalRecords: null,
sortKey: "sort",
q: "state:active"
},
parseState: function (resp, queryParams, state, options) {
return {totalRecords: resp.responseData.total_count};
},
parseRecords: function (resp, options) {
return resp.responseData.items;
console.log(options);
}
});
var mycollection = new MyCollection();
var grid = new Backgrid.Grid({
columns: columns,
collection: mycollection
});
// Render the grid and attach the root to your HTML document
var $datagrid = $("#paginator-example-result");
$datagrid.append(grid.render().$el);
var paginator = new Backgrid.Extension.Paginator({
collection: mycollection
});
var myCustomRequestHeader = "ABCDEFG";
// Render the paginator
$datagrid.append(paginator.render().$el);
mycollection.fetch({reset: true, beforeSend: function(xhr){ xhr.setRequestHeader('X-Cust-Request-Header', myCustomRequestHeader); }, type: 'POST'}); // This works as expected, the custom header is set in the first request
前もって感謝します!
編集、以下のジョン・モーゼスの回答に基づいて、これは作業スニペットです:
var MyCollection = Backbone.PageableCollection.extend({
...
sync: function(method, model, options){
options.beforeSend = function(xhr){ xhr.setRequestHeader('X-Cust-Request-Header', myCustomRequestHeader);};
return Backbone.sync(method, model, options);
}
...
});