Javascript 如何在Sencha Touch应用程序中使用以前的过滤器获取总记录?

Javascript 如何在Sencha Touch应用程序中使用以前的过滤器获取总记录?,javascript,extjs,sencha-touch,Javascript,Extjs,Sencha Touch,使用基于Sencha Touch的应用程序时,我需要获得商店的总数量,但要实现以前的过滤器 我可以做store.getCount()和了解存储区的总记录,但如何使用以前的筛选器了解总记录?这里有一个替代解决方案: var count = 0; store.findBy(function(rec) { if (rec.get('myFilter')) { count++; // Only counting matching data } }); console.

使用基于Sencha Touch的应用程序时,我需要获得商店的总数量,但要实现以前的过滤器


我可以做
store.getCount()
和了解存储区的总记录,但如何使用以前的筛选器了解总记录?

这里有一个替代解决方案:

var count = 0;

store.findBy(function(rec) {
    if (rec.get('myFilter')) {
        count++; // Only counting matching data
    }
});

console.log(count); // Total amount of filtered data
From:

如果存储已筛选,则将根据您的筛选检索记录的数量。如果筛选“Billy”,如果有2个“Billy”,则
getCount()
将只返回2

从文档中:

获取存储区中的记录数

如果使用分页,这可能不是数据集的总大小。如果 读取器使用的数据对象包含数据集大小,然后 Ext.data.ProxyStore.getTotalCount函数返回数据集大小。 注意:请参阅Ext.data.ProxyStore.load中的重要注意事项

筛选存储时,它是与存储匹配的记录数 过滤器

如果您想获得可以使用的记录总数。这将统计所有记录,无论是否已过滤

从文档中:

返回代理指示的模型实例总数 存在。这通常与使用分页时的getCount不同- getCount返回在指定时间加载到存储中的记录数 此时,getTotalCount返回可以删除的记录数 如果存储包含所有数据,则加载到存储中

如果您想查询存储,可以使用。这将返回一组记录。然后可以在集合上使用

var billies = store.queryBy(function(rec, id) {
    return rec.get('name') === 'billy';
});

billies.getCount();

你能给我发些代码吗?你想做什么?我可以帮你。简单地说,我想过滤,例如,通过名称,并得到这个的计数。。想象一下有多少张唱片的名字是“比利”。。。非常感谢。是的,但我确实需要使用@Benoit指定的方法进行过滤。。我会得到你关于getCount和getTotalCount的建议。。。。非常感谢。我不明白为什么这是正确的答案。首先,如果您想这样做,我建议用
每个
替换
findBy
。其次,
if(rec.get('myFilter'))
只能在检查布尔值时工作。您提到的答案已经有3年多的历史了,并且还在检查布尔值。现在您可以使用
query
(对于extjs或
queryby
(对于Touch)。