Javascript 使用dstore Rest禁用查询参数中的筛选器

Javascript 使用dstore Rest禁用查询参数中的筛选器,javascript,dojo,dstore,Javascript,Dojo,Dstore,因为我使用的dgrid对象比与存储交互的本机dojo对象多,所以我想切换到dstore,而不是dojo.store.rest。 但是,当我将dstore与适配器一起用于实时搜索(FilteringSelect)时,查询参数的修改方式会破坏我的api:例如,我键入“foo”,它会向 /api?name=match=foo* 但我想: /api?name=foo* 就像dojo/store/rest一样。 我认为它来自dstore中的筛选器类。 有没有办法禁用此筛选器?我找到了实现此行为的方法,我必

因为我使用的dgrid对象比与存储交互的本机dojo对象多,所以我想切换到dstore,而不是dojo.store.rest。
但是,当我将
dstore
与适配器一起用于实时搜索(FilteringSelect)时,查询参数的修改方式会破坏我的api:例如,我键入“foo”,它会向

/api?name=match=foo*

但我想:

/api?name=foo*

就像dojo/store/rest一样。 我认为它来自dstore中的筛选器类。

有没有办法禁用此筛选器?

我找到了实现此行为的方法,我必须添加一个修改版本的_renderFilterParams:

var存储=新的Rest({
目标:'/api',
_renderFilterParams:函数(过滤器){
var type=filter.type;
var args=filter.args;
如果(!类型)
返回[''];
如果(类型=='string')
返回[args[0]];
返回[encodeURIComponent(args[0])+'='+encodeURIComponent(args[1]);
}
});

下面是我如何处理这个问题的,以及设置我使用的一些默认值

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;
       }

   });
});
定义([
“dojo/_base/declare”,
“dojo/query”,
“dstore/Rest”
],
函数(声明、查询、Rest){
var csrfHeader=query('meta[name=“\u csrf\u header”]”)[0]。内容,
csrfToken=query('meta[name=“\u csrf”]”)[0]。内容,
标题={
“内容类型”:“应用程序/json;字符集=utf-8”,
“接受”:“应用程序/json”
};
headers[csrfHeader]=csrfToken;
返回declare('app.store.rest',[rest]{
排序图:“排序”,
RangeStartRAM:“偏移量”,
rangeCountParam:“限制”,
递增前缀:“%2B”,
下降前缀:“%2D”,
接受:“application/json”,
标题:标题,
_renderFilterParams:函数(过滤器){
var_filter=this.inherited(参数);
对于(var i=0;i