如何在同步前将动态查询参数添加到 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);
}