如何使用 contains 方法过滤 dstore?

Posted

技术标签:

【中文标题】如何使用 contains 方法过滤 dstore?【英文标题】:How can I filter a dstore using the contains method? 【发布时间】:2016-04-28 03:58:43 【问题描述】:

我有一个填充了 dstore 普通旧内存集合的 dgrid,我正在尝试使用“包含”过滤器方法对其进行过滤。商店数据如下所示:

[
    id:"25", users: ["13", "15"],
    id:"347", users: ["13"],
    id:"653", "users":["13", "17"]
]

我想检索用户数组中给定用户所在的所有记录。据我了解,我希望能够设置像new Filter().contains('users', '15'); 这样的过滤器并将其设置为网格的集合,在本例中留下一行(id = '25')。但是,我剩下 0 行。我还尝试为过滤器提供正则表达式,而不仅仅是值匹配,例如new Filter().contains('users', new RegExp('^15$'));,但这不会过滤掉任何行。

我正在使用 dojo v1.10.4、dgrid v1.0.0 和 dstore v1.1.1。 这是一个 JSFiddle 演示我的问题。

我做错了吗?

谢谢。

【问题讨论】:

我也尝试过,但遇到了同样的问题。最终,我不得不重写 store 的 filter 方法。 【参考方案1】:

您将用户存储为数组,这就是您不能使用的原因

new Filter().contains('users', '15');

如果您想使用 .contains,则必须像这样使用它:

new Filter().contains('users', ['15']);

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

【讨论】:

这行得通,而且是我不会做的事情!文档中没有提到要匹配的值应该(或可以)作为数组提供。来自sitepen 的示例说要搜索带有“spring”标签的产品来执行var filteredCollection = store.filter(new store.Filter().contains('tag', 'spring')); 并同样提供一个数组,因为docs 中没有提到该值。谢谢你:)

以上是关于如何使用 contains 方法过滤 dstore?的主要内容,如果未能解决你的问题,请参考以下文章

使用 dstore Rest 在查询参数中禁用过滤器

Dojo dgrid dstore 集合 - “或”过滤器不起作用

Dstore 过滤器:有没有办法比较属性?

我如何从Dojo dstore中删除所有项目?

如何使用或使用 Django 的模型过滤系统?

Dojo dGrid/dStore 实时更新