如何在同步前将动态查询参数添加到 Backbone 可分页集合
How do you add dynamic queryParams to Backbone pageableCollection before syc
我是 Backbone 的新手,由于 API 不支持页面,我试图在获取同步发生之前向 queryParams 添加额外的参数偏移量,这就是我试图拦截的内容在发送选项之前同步但它不起作用,有人知道如何实现吗?
Backbone.PageableCollection.extend({
model: Entities.Role,
url: function () {
return App.API + 'role';
},
mode: "server",
state: {
pageSize: 15,
order: 1,
firstPage: 1,
currentPage: 1
},
// You can remap the query parameters from `state` keys from
// the default to those your server supports
queryParams: {
offset: 0,
totalPages: null,
totalRecords: null,
sortKey: "sort",
pageSize: "max"
},
sync: function(method, model, options){
var defer = $.Deferred();
options.beforeSend=function(xhr) {
options.data.offset=(parseInt(model.state.currentPage) - 1) * model.state.pageSize;
model.queryParams.offset=(parseInt(model.state.currentPage) - 1) * model.state.pageSize;
defer.resolve(method, model, options);
}
return defer.promise(Backbone.sync(method, model, options));
}
});
解决:
你不需要使用 defer - 只适用于:
sync: function(method, model, options){
options.data.offset=(parseInt(model.state.currentPage) - 1) * model.state.pageSize;
model.queryParams.offset=(parseInt(model.state.currentPage) - 1) * model.state.pageSize;
return Backbone.sync(method, model, options);
}
我是 Backbone 的新手,由于 API 不支持页面,我试图在获取同步发生之前向 queryParams 添加额外的参数偏移量,这就是我试图拦截的内容在发送选项之前同步但它不起作用,有人知道如何实现吗?
Backbone.PageableCollection.extend({
model: Entities.Role,
url: function () {
return App.API + 'role';
},
mode: "server",
state: {
pageSize: 15,
order: 1,
firstPage: 1,
currentPage: 1
},
// You can remap the query parameters from `state` keys from
// the default to those your server supports
queryParams: {
offset: 0,
totalPages: null,
totalRecords: null,
sortKey: "sort",
pageSize: "max"
},
sync: function(method, model, options){
var defer = $.Deferred();
options.beforeSend=function(xhr) {
options.data.offset=(parseInt(model.state.currentPage) - 1) * model.state.pageSize;
model.queryParams.offset=(parseInt(model.state.currentPage) - 1) * model.state.pageSize;
defer.resolve(method, model, options);
}
return defer.promise(Backbone.sync(method, model, options));
}
});
解决: 你不需要使用 defer - 只适用于:
sync: function(method, model, options){
options.data.offset=(parseInt(model.state.currentPage) - 1) * model.state.pageSize;
model.queryParams.offset=(parseInt(model.state.currentPage) - 1) * model.state.pageSize;
return Backbone.sync(method, model, options);
}