3

事实上,带有 Rest 代理和 Json 读取器的 ExtJS 4.1 要求这样的 URI(虽然是 urlencoded):

http://localhost:8000/api/v1/choice/?filter=[{"property":"question_id","value":2}]

我的服务器希望过滤器请求看起来像:

http://localhost:8000/api/v1/choice/?question_id=2

我查看filterParam了代理的配置,但似乎不相关。有没有一种实用的方法来实现服务器需要的请求 URI?

4

2 回答 2

2

跟随并不漂亮,但它有效。现在要修复该死的商店...

/**
         * Customized to send ../?prop=val&prop2=val2 urls.
         */
        buildUrl: function(request) {
            var url = this.url;
            var filters = eval(request.params['filter']);
            if (filters) {
                delete request.params['filter'];
                url += '?'
                for (var i = 0; i < filters.length; i++) {
                    var filterString = filters[i].property + "=" + filters[i].value;
                    if (url.slice(url.length-1) === '?') {
                        url += filterString;
                    } else {
                        url += '&' + filterstring;
                    } 
                }
            };
            return url;
        },
于 2012-05-23T22:12:25.060 回答
1

没有简单(容易)的方法。您将不得不扩展现有的Proxy课程。查看 和 的源Ext.data.proxy.Proxy代码Ext.data.proxy.Server。从查看功能getParams开始buildUrl

于 2012-05-23T12:07:09.750 回答