0
我使用Label組件來顯示ArrayCollection的長度。當我將新項目添加到集合中時,如何獲取它?更新標籤文本字段
下面是標籤的文本字段:
text="{model.meetingInfo.documentList.length}"
下面是加入新的項目到集合中的處理程序:
var attachmentProgressVO:AttachmentProgressVO = new AttachmentProgressVO();
attachmentProgressVO.fileReference = file as File;
newAttachmentList.addItem(attachmentProgressVO);
checkIfUpdate(file as File, attachmentProgressVO);
meetingInfo.docsAndAttachmentsList.addItem(attachmentProgressVO);
我嘗試添加這兩條線,但沒有奏效:
meetingInfo.docsAndAttachmentsList.itemUpdated(attachmentProgressVO);
meetingInfo.docsAndAttachmentsList.refresh();
我也想改變這個:
public var docsAndAttachmentsList:ArrayCollection = new ArrayCollection();
這樣:
private var _docsAndAttachmentsList:ArrayCollection = new ArrayCollection();
..with一個getter和setter,但沒有奏效。
我沒有使用正確的方法,是嗎?
我不相信Array.length是一個可綁定屬性(這很好,因爲長度getter非常耗費資源,不幸的是)。如果這是真的,它不會自動更新。我想,你需要手動更新字段。 –
@ Apocalyptic0n3 ArrayCollection上的長度爲Bindable。儘管是隻讀屬性。它被設置爲觸發與CollectionChange事件關聯的綁定。數組的長度不會是Bindable,因爲Bindable是Flex框架特定的實現,而Array不是Flex類。爲什麼你認爲長度吸氣劑是資源密集型的?我從來沒有測試過,但從未發現問題。 ArrayCollection.length只是Array.length的包裝;所以它應該非常快 - 除非Array.length是導致放緩的原因。 – JeffryHouser
我還沒有做過任何測試,但是我已經在多個位置上看到它是一個「沉重的」吸氣,並且最好不要將它用作循環中的限制器,因爲它必須每次都運行循環運行。我不確定他們如何得到長度,但我懷疑它可能使用循環來計算數組中的每個項目。 –