2012-07-13 64 views
0
var pmStore = new storeOfUsers(); // storeOfUsers is an Ext.data.DirectStore with autoLoad: true 
console.log(pmStore.data); // is an Ext.util.MixedCollection with 6 items including user_id == 1 

var pms = pmStore.data.filter('user_id', 1); 
console.log(pms); //is an Ext.util.MixedCollection with length == 0 

你好。
在過濾了MixedCollection之後,返回的集合是空的,雖然有user_id == 1的結果。我錯過了什麼嗎?
謝謝。ExtJs4 MixedCollection過濾

+0

我的猜測是問題是商店的異步加載。你可能在它被淹沒之前過濾商店。過去我有過console.log()顯示同步數據的實例,就好像在調用完成後更新日誌一樣。我會嘗試取消自動加載,並執行手動加載,而不是過濾數據的回調。 – Izhaki 2012-07-13 10:55:12

+0

console.log(pmStore.data); //顯示長度爲6的對象 console.log(pmStore.data.length); // shows 0 Izhaki,你是對的。 'console.log'顯示當前的對象狀態,而不是'console.log'被調用時的狀態。我只是試圖過濾任何東西。 謝謝! – SergB 2012-07-13 11:34:07

回答

0

我的猜測是問題是商店的異步加載。

您可能在它被淹沒之前過濾商店。我以前有console.log()錯誤顯示同步數據的實例(就像調用完成後更新日誌一樣)。

我想嘗試取消自動加載,並做一個手動加載,而不是過濾數據的回調。

+0

就是這樣!謝謝! – SergB 2012-07-16 08:44:25

0

你正在篩選你的集合,你需要使用Ext.util.Filter對象來過濾你的MixedCollection。這裏有一個例子:

//your store 
var pmStore = new storeOfUsers(); 

//Create the filter 
var lFilter = new Ext.util.Filter({ 
    property: 'user_id', 
    value : 1 
}); 

//Filter the data 
var pms = pmStore.data.filter(lFilter); 
+0

謝謝Johan!但仍收集長度爲0.還嘗試了不同的選項,如anyMatch和exactMatch ... – SergB 2012-07-13 11:07:43