我使用的火花組合框爲XMLListCollection,通過此鏈接AS3:如何使用ActionScript3訪問XMLListCollection中的數據?
http://blog.shortfusion.com/index.cfm/2009/4/15/FlexAS3-Custom-ComboBox-for-Countries-with-XML
的的XMLListCollection在這裏定義的啓發:
public class ComboBox_Country extends ComboBox {
private var Country:XML=new XML(
<countries>
<country code="US" iso="840" label="United States" />
<country code="CA" iso="124" label="Canada" />
<country code="GB" iso="826" label="United Kingdom" />
....
<country code="ZM" iso="894" label="Zambia" />
<country code="ZW" iso="716" label="Zimbabwe" />
</countries>);
public function ComboBox_Country() {
dataProvider = new XMLListCollection(Country.children());
labelField = '@label';
}
,並呼籲在MXML爲:
<mycomp:ComboBox_Country id="countryComboBox" width="100%"/>
當用戶進行選擇時,我可以從countryComboBox.selectedIndex
獲得索引。但是,我需要該國家的字符串,我不確定如何從XMLListCollection中提取該字符串。當我看到在調試器中我看到:
比方說,用戶選擇指數2(例如英國)。我需要鍵入調試器才能返回United Kingdom
?我試過這樣的東西:
countryComboBox.Country.getItemAt(2)
countryComboBox.Country.getItemAt(2).label
countryComboBox.Country[2]
countryComboBox.Country.label.getItemAt(2)
etc...
無濟於事。
感謝borisgolovnev,當我嘗試它返回:'XMLList(@ 121f5cf11)'在調試器中。 – ggkmath
爲什麼在調試器中需要這個標籤?我現在試過了,是的,它在調試器中顯示爲XML,但是如果我跟蹤它(),它會返回一個國家/地區名稱。這是因爲@和其他XML遍歷方法實際上是您必須調用才能獲取數據的方法。調試器不這樣做。 – borisgolovnev
我只是使用調試器作爲工具來幫助找出正確的語法來返回選定的標籤。但是,是的,你是對的,如果我跟蹤你上面顯示的代碼,它確實提供了正確的結果。謝謝!!! – ggkmath