2016-04-28 7 views
2

Ich habe ein dgrid mit einer dstore plain alten Memory-Sammlung gefüllt, die ich versuche zu filtern mit der 'contains' Filtermethode. Die Geschäftsdaten sehen in etwa so aus:Wie kann ich einen dstore mithilfe der contains-Methode filtern?

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

Ich möchte alle Datensätze abrufen, in denen sich ein bestimmter Benutzer im Benutzer-Array befindet. Nach meinem Verständnis habe ich erwartet, einen Filter wie new Filter().contains('users', '15'); einrichten zu können und diesen als Sammlung für das Gitter festzulegen, wobei in diesem Beispiel eine Zeile (id = '25') übrig bleibt. Ich bleibe jedoch mit 0 Zeilen. Ich habe auch versucht, einen regulären Ausdruck für den Filter zur Verfügung zu stellen, anstatt nur den Wert zu vergleichen, wie new Filter().contains('users', new RegExp('^15$'));, aber dies filtert keine Zeilen aus.

Ich verwende Dojo v1.10.4, dgrid v1.0.0 und dstore v1.1.1. Hier ist eine JSFiddle zeigt mein Problem.

Mache ich etwas falsch?

Danke.

+0

Ich versuchte auch das gleiche, aber war mit dem gleichen Problem konfrontiert. Schließlich musste ich die 'Filter'-Methode für das Geschäft außer Kraft setzen. – Himanshu

Antwort

1

Sie speichern Benutzer als ein Array, das ist, warum Sie nicht

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

Wenn Sie .contains wollen verwenden können, als Sie es wie folgt verwenden müssen:

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

aka Sie müssen dies überprüfen, indem Sie ein Array und keine Zeichenfolge angeben.

+1

Das funktioniert und wäre etwas, was ich nicht hätte tun können! In der Dokumentation wird nicht erwähnt, dass der zu vergleichende Wert als Array bereitgestellt werden soll (oder könnte). Das Beispiel von [sitepen] (https://www.sitepen.com/blog/2015/04/17/dstore-1-1/) sagt, dass man nach Produkten mit einem Tag "spring" suchen soll, um 'var filteredCollection = zu tun store.filter (new store.Filter(). contains ('tag', 'spring')); 'und stellt ebenfalls ein Array zur Verfügung, da der Wert nicht in [docs] (https://github.com/SitePen /dstore/blob/master/docs/Collection.md). Vielen Dank :) – kleisto

Verwandte Themen