2016-04-28 8 views
2

dstoreには、 'contains'フィルタメソッドを使用してフィルタリングしようとしているdstoreプレーンな古いメモリコレクションが格納されています。ストアデータは次のようになります。containsメソッドを使用してdstoreをフィルタリングするにはどうすればよいですか?

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

特定のユーザーがユーザーアレイ内にあるすべてのレコードを取得します。私の理解から、new Filter().contains('users', '15');のようなフィルタを設定して、この例では1行(id = '25')を残してグリッドのコレクションとして設定できることを期待していました。しかし、私は0行残っています。私もnew Filter().contains('users', new RegExp('^15$'));のような値の一致の代わりに、フィルタの正規表現を提供しようとしましたが、これはすべての行を除外しません。

私はdojo v1.10.4、dgrid v1.0.0およびdstore v1.1.1を使用しています。 ここに私の問題を示すJSFiddleがあります。

何か間違っていますか?

ありがとうございました。

+0

私も同じことを試みましたが、同じ問題に直面していました。最終的には、ストアの 'filter'メソッドをオーバーライドしなければなりませんでした。 – Himanshu

答えて

1

あなたは.containsを使用したい場合は、このようにそれを使用する必要がありますよりも、あなたが

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

を使用することはできません理由がある、配列としてユーザーを格納されています

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

別名文字列ではなく配列を指定してチェックする必要があります。

+1

これは動作しますが、私はやっていないでしょう!ドキュメントには、一致させる値が配列として提供される必要がある(または可能である)ことは記載されていません。 [sitepen](https://www.sitepen.com/blog/2015/04/17/dstore-1-1/)の例では、タグが "spring"の製品を検索して、 'var filteredCollection = [docs](https://github.com/SitePen)に値が記載されていないので、store.filter(new store.Filter()。contains( 'tag'、 'spring')); ' /dstore/blob/master/docs/Collection.md)。ありがとうございました :) – kleisto

関連する問題