繁体   English   中英

sencha触摸过滤器商店从列表?

[英]sencha touch filter store from a list?

我试图应用从localStorage商店获得的几个过滤器。

我加载商店并可以应用一些过滤器:

var newsStore = Ext.getStore("cityStore");

newsStore.filter(Ext.create('Ext.util.Filter', {
  filterFn: function(item) {
    return item.get('name') == 'city1' || item.get('name') == 'city2';  
}
}));

但现在我有一个项目列表,并希望遍历列表中的所有项目并将它们应用于商店过滤器。

问题是我无法通过循环迭代并且一次又一次地返回item.get('name')=='variable',因为这只会过滤掉最后一个返回但是我想应用列表中的每个项目作为上面看到的过滤器。

希望我能在这里找到一些帮助......

谢谢!

想象你有一个包含你必须用来过滤商店的名字的数组,我们将这个数组称为'名字':

var names = ['Lucas', 'Pablo', 'Noelia'];

如果记录包含names数组中列出的某些值,则在filterFn中要执行的操作将返回true。 神奇的是某种功能。

store.filter(Ext.create('Ext.util.Filter', {
  filterFn: function(item) {
      return names.some(function(name){ return name === item.get('name')});  
  }
}));

例如,以下商店将只包含2行(应用过滤器后):Lucas和Pablo:

var names = ['Lucas', 'Pablo', 'Noelia'];

var store = Ext.create('Ext.data.ArrayStore', {
    fields: ['id', 'name'],    
    data: [
        [ 1, 'Lucas' ],
        [ 2, 'Pablo' ],
        [ 3, 'Francisco' ]
    ]
});

store.filter(Ext.create('Ext.util.Filter', {
  filterFn: function(item) {
      return names.some(function(name){ return name === item.get('name')});  
}
}));

// display the filtered record in the console
store.each(function(record){ console.log(record.get('name'))})​

你也可以在这里工作: http//jsfiddle.net/lontivero/5TWq9/3/

我希望这很有用。 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM