因为与与商店交互的本机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/

10-12 20:20