0

我有过滤器:

store.filter([Ext.create('Ext.util.Filter', {
                        property : "firstName",
                        value : Ext.getCmp("firstName").getValue(),
                        root : 'data'
                    }), Ext.create('Ext.util.Filter', {
                        property : "lastName",
                        value : Ext.getCmp("lastName").getValue(),
                        root : 'data'
                    }), Ext.create('Ext.util.Filter', {
                        property : "gender",
                        value : "MALE",//Ext.getCmp("gender").getValue(),
                        root : 'data'
                    }), Ext.create('Ext.util.Filter', {
                        property : "ssn",
                        value : Ext.getCmp("ssn").getValue(),
                        root : 'data'
                    }), Ext.create('Ext.util.Filter', {
                        property : "dateOfBirth",
                        value : Ext.getCmp('dateOfBirthTo').getValue(),
                        root : 'data',
                        operator : "<"
                    })]);

创建此有效负载:

{..."filter":[{"property":"firstName","value":""},{"property":"lastName","value":""},{"property":"gender","value":"MALE"},{"property":"ssn","value":""},{"property":"dateOfBirth","value":"2013-05-22T00:00:00"}]}],...}

我怎样才能改变这个有效载荷?我正在使用 extdirectspring,它需要一些额外的参数来创建正确的过滤器。代替{"property":"dateOfBirth","value":"2013-05-22T00:00:00"}

我需要:

{"property":"dateOfBirth","value":"2013-05-22T00:00:00", "type":"date","operator":"lte"}

4

1 回答 1

1

没试过,只是快速浏览一下源代码,看来您可以覆盖Ext.data.proxy.Server的 encodeFilters() 方法。这是它目前的样子:

encodeFilters: function(filters) {
    var min = [],
        length = filters.length,
        i = 0;

    for (; i < length; i++) {
        min[i] = {
            property: filters[i].property,
            value   : filters[i].value,
            // add your custom params here
        };
    }
    return this.applyEncoding(min);
}

换句话说,当您创建过滤器时,我相信您可以将自定义配置添加到这些过滤器中,然后通过覆盖确保在发出请求时包含它们(如果存在)。

于 2013-05-23T05:05:29.397 回答