2013-01-07 47 views
0

我有一個房間對象列表,它綁定到名爲roomsGroup的數組集合(在模型中)。我有通過從服務器調用相應的服務來添加或刪除列表中的房間的功能。一切正常 - 直到沒有房間,我在列表中添加第一個房間。然後,即使正確添加(從服務器返回的房間對象的長度爲1),它也不會顯示在UI中。如果我添加第二個房間,那麼他們都會出現。集合中有1個項目時,AS3過濾器功能不起作用

整個模型類(一個單例)被標記爲Bindable,因此public roomsGroup變量也會自動綁定。

在'add room'服務的結果處理程序中,我檢查服務器返回的房間,然後將它們放入名爲rooms的本地數組集合中。然後,我設置綁定roomsGroup模型=房間:

model.roomsGroup = rooms; 
    model.roomsGroup.refresh(); //I tried adding this but it doesn't help. 
    model.roomsGroup.filterFunction = null; //Also tried this, but it doesn't help. 

在面板,列表組件都有其源綁定到model.roomsGroup數組集合:

<myPanel:RoomsComponent id="roomsList" roomSource="{model.roomsGroup}" 

一件事 - 在myPanel中有一個文本框,在keyup上調用名爲searchContact()的函數。其中一件事情是這樣的:

model.roomsGroup.filterFunction = roomFilterFunction; 
model.roomsGroup.refresh(); 

所以我打電話給服務,並且第一/唯一創建的房間不顯示。但是,如果我在文本框中鍵入內容,那麼它確實顯示出來。換句話說,過濾器函數確實導致它顯示。

想知道爲什麼,如果綁定設置正確(並且它們是,因爲它在除了當我們從零到列表中的一個項目時都在其他情況下工作),它將無法工作。我最好的猜測是它與過濾功能有關,但我不知道具體是什麼。

任何幫助表示讚賞。

+0

爲什麼不加一個虛擬的空間是不可見的,不會影響任何東西的清單,我認爲應該採取照顧的問題,因爲當你將第一個房間添加到列表中,列表大小將爲2.這並不真正回答爲什麼有問題。 –

+0

您可能想要顯示filterFunction的代碼。或者如果可能的話,提供簡單的工作示例。這裏似乎沒有足夠的信息來解釋爲什麼會發生這種情況。 –

回答

0

在這裏你需要向上移動這一行代碼model.roomsGroup.filterFunction = null;然後你的問題就解決了。代碼

model.roomsGroup = rooms; 
model.roomsGroup.refresh(); //I tried adding this but it doesn't help. 
model.roomsGroup.filterFunction = null; //Also tried this, but it doesn't help. 

塊改爲

model.roomsGroup = rooms; 
model.roomsGroup.filterFunction = null; //This should be first line. 
model.roomsGroup.refresh(); //This should be second line. 
+0

謝謝 - 試過,但它沒有奏效。我將嘗試徹底刪除過濾器功能,否則試圖強制它啓動。 – David