Как я могу отфильтровать 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']);
Вы также должны проверить, указав массив, а не строку.