因为与与商店交互的本机dojo对象相比,我使用了更多的dgrid对象,所以我想切换到dstore而不是dojo.store.rest。
但是当我将dstore
与适配器一起用于实时搜索(FilteringSelect)时,查询参数的修改方式破坏了我的api:我输入“ foo”,它向发送请求/api?name=match=foo*
但是我想要:/api?name=foo*
就像dojo/store/rest
一样。
我认为它来自dstore中的Filter类。
有没有办法禁用此过滤器?
最佳答案
这是我的处理方式,同时还设置了一些我使用的默认值
define([
'dojo/_base/declare',
'dojo/query',
'dstore/Rest'
],
function (declare, query, Rest) {
var csrfHeader = query('meta[name="_csrf_header"]')[0].content,
csrfToken = query('meta[name="_csrf"]')[0].content,
headers = {
'Content-Type': 'application/json; charset=utf-8',
'Accept': 'application/json'
};
headers[csrfHeader] = csrfToken;
return declare('app.store.rest', [ Rest ], {
sortParam: 'sort',
rangeStartParam: 'offset',
rangeCountParam: 'limit',
ascendingPrefix: '%2B',
descendingPrefix: '%2D',
accepts: 'application/json',
headers: headers,
_renderFilterParams: function (filter) {
var _filter = this.inherited(arguments);
for(var i=0; i<_filter.length; i++) {
_filter[i] = _filter[i].replace('match=', '').replace('*', '');
}
return _filter;
}
});
});
关于javascript - 使用dstore Rest禁用查询参数中的过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32549584/