Dojo 如何使用contains方法筛选数据存储?

Dojo 如何使用contains方法筛选数据存储?,dojo,dstore,Dojo,Dstore,我有一个dgrid,其中填充了一个dstore普通旧内存集合,我正试图使用“contains”筛选方法对其进行筛选。存储数据如下所示: [ {id:"25", users: ["13", "15"]}, {id:"347", users: ["13"]}, {id:"653", "users":["13", "17"]} ] new Filter().contains('users', ['15']); 我想检索用户数组中给定用户所在的所有记录。据我所知,我希望能够设

我有一个dgrid,其中填充了一个dstore普通旧内存集合,我正试图使用“contains”筛选方法对其进行筛选。存储数据如下所示:

[
    {id:"25", users: ["13", "15"]},
    {id:"347", users: ["13"]},
    {id:"653", "users":["13", "17"]}
]
new Filter().contains('users', ['15']);
我想检索用户数组中给定用户所在的所有记录。据我所知,我希望能够设置一个过滤器,如
newfilter()。包含('users','15')
并将其设置为网格的集合,在本例中保留一行(id='25')。但是,我只剩下0行。我还尝试过为筛选器提供正则表达式,而不仅仅是值匹配,比如
new filter()。contains('users',new RegExp('^15$)但是这不会过滤掉任何行

我使用的是DojoV1.10.4、dgrid v1.0.0和dstore v1.1.1。 下面是一个演示我的问题的例子

我做错什么了吗


谢谢。

您将用户存储为一个数组,这就是为什么您不能使用

new Filter().contains('users', '15');
如果要使用.contains,则必须按如下方式使用它:

[
    {id:"25", users: ["13", "15"]},
    {id:"347", users: ["13"]},
    {id:"653", "users":["13", "17"]}
]
new Filter().contains('users', ['15']);

a、 k.a您必须通过提供数组而不是字符串进行检查。

我也尝试了同样的方法,但遇到了同样的问题。最后,我不得不覆盖商店的
过滤器
方法。这很有效,是我想都不会做的事情!文档中没有提到要匹配的值应该(或可以)作为数组提供。来自的示例表示搜索标记为“spring”的产品以执行
var filteredCollection=store.filter(new store.filter().contains('tag','spring'))
并同样提供一个数组,因为在中没有提到该值。谢谢:)