2013-08-22 4 views
2

Я передал функцию в качестве фильтра в моем WSAPI-запросе, однако, похоже, это не повлияло на возвращаемые результаты. Есть ли поля, которые нельзя отфильтровать, используя этот метод?filterFn Кажется, не влияет на запрос WSAPI

Ext.define('CustomApp', { 
    extend: 'Rally.app.App', 
    componentCls: 'app', 

    launch: function() { 
     Ext.create('Rally.data.WsapiDataStore', { 
      model  : 'TestCase', 
      fetch  : ['TestCases'], 
      filters  : [ 
       function(item) { 
        return item.FormattedID.indexOf('10') !== -1; 
       } 
      ] 
     }).load({ 
      callback: function(records) { 
       //All records returned, no filter applied 
      } 
     }); 
    } 
}); 

ответ

0

Я также ожидал, что ваш код будет работать, но, возможно, обратный вызов происходит до применения фильтра на стороне клиента. Ниже приведена модифицированная версия кода, в который применяется фильтр, и возвращается только одна запись:

Ext.define('CustomApp', { 
    extend: 'Rally.app.App', 
    componentCls: 'app', 
    launch: function() { 

     var myStore = Ext.create('Rally.data.WsapiDataStore', { 
      model  : 'TestCase', 
      fetch  : ['FormattedID'] 
     }); 
     myStore.load({ 
      callback: function(records) { 
       myStore.filterBy(function(item) { 
        return item.get('FormattedID').indexOf('10') !== -1; 
      }); 
      console.log(myStore.getRange()); //one record 
      } 
     }); 
    } 
}); 
+0

Спасибо за ответ Nick! Это здорово, но это не совсем то, что я ищу. Я не хочу фильтровать результаты после того, как я загружаю содержимое на свою сторону, я ищу способ фильтрации серверной части результатов. В основном то, что я пытаюсь воссоздать, - это оператор 'in', который предлагает LBAPI. Поскольку WSAPI этого не предлагает, я надеялся реализовать его, передав функцию на сервер. Похоже, что это может быть невозможно :( –

+0

Добро пожаловать, Коннер. Предполагаю, вы хотели использовать Rally.data.lookback.SnapshotStore, если хотите получить данные из LBAPI. – nickm