Как я могу отфильтровать dstore, используя метод contains?

У меня есть dgrid, заполненный простой старой коллекцией памяти dstore, которую я пытаюсь отфильтровать, используя метод фильтра "содержит". Данные магазина выглядят примерно так:

[
    {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, демонстрирующий мою проблему.

Я делаю что-то неправильно?

Благодарю.

1 ответ

Решение

Вы храните пользователей в виде массива, поэтому вы не можете использовать

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

Если вы хотите использовать.contains, то вам придется использовать его следующим образом:

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

Вы также должны проверить, указав массив, а не строку.

Другие вопросы по тегам