Javascript 从列表中选择sencha触摸过滤器存储?
我正在尝试应用从本地存储商店获得的几个过滤器 我加载存储并可以应用一些过滤器:Javascript 从列表中选择sencha触摸过滤器存储?,javascript,extjs,filter,sencha-touch,store,Javascript,Extjs,Filter,Sencha Touch,Store,我正在尝试应用从本地存储商店获得的几个过滤器 我加载存储并可以应用一些过滤器: var newsStore = Ext.getStore("cityStore"); newsStore.filter(Ext.create('Ext.util.Filter', { filterFn: function(item) { return item.get('name') == 'city1' || item.get('name') == 'city2'; } })); 但是现在我有了
var newsStore = Ext.getStore("cityStore");
newsStore.filter(Ext.create('Ext.util.Filter', {
filterFn: function(item) {
return item.get('name') == 'city1' || item.get('name') == 'city2';
}
}));
但是现在我有了一个项目列表,希望遍历列表中的所有项目,并将它们应用到商店过滤器
问题是,我无法反复遍历循环并执行返回项。get('name')=='variable',因为这只会过滤最后一次返回,但我希望应用列表中的每个项,如上面所示
希望我能在这里找到一些帮助
谢谢 如果您有一个数组,其中包含用于筛选存储的名称,我们将此数组称为“名称”:
var names = ['Lucas', 'Pablo', 'Noelia'];
如果记录包含名称数组中列出的一些值,则必须在过滤器fn中执行的操作是返回true。神奇之处在于some功能
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'))})
你也可以在这里工作:
我希望这是有用的。
祝你好运 我有一段时间没有做这个项目,但我又试了一次,它成功了!谢谢!