2016-04-28 57 views
2

我有一個dgrid填充了一個dstore普通舊內存集合,我試圖使用'contains'過濾器方法進行過濾。這家商店的數據看起來是這樣的:如何使用contains方法過濾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展示我的問題。

我做錯了什麼?

謝謝。

+0

我也試過一樣,但面臨同樣的問題。最後,我不得不重寫商店的'filter'方法。 – Himanshu

回答

1

要存儲用戶爲一個數組,這就是爲什麼你不能使用

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 = store.filter(new store.Filter()。contains('tag','spring'));'同樣提供一個數組,因爲這個值沒有在[docs]中提到(https://github.com/SitePen /dstore/blob/master/docs/Collection.md)。謝謝 :) – kleisto