2016-07-22 17 views
-1

分配數據提供程序,當我試圖讓兩個不同的測試下拉菜單以相同的方式工作。看似不一致的行爲,以Flex的PopUpMenuButton等

<mx:HBox x="10" y="50" > 
    <mx:PopUpMenuButton id="associativeDD"/> 
</mx:HBox> 
<mx:HBox x="100" y="50" > 
    <mx:PopUpMenuButton id="indexedDD"/> 
</mx:HBox> 

當我使用ActionScript不過來分配數據提供程序的值,我似乎得到兩個不同的結果取決於我是否使用關聯數組或索引之一。

var arr1:Array = new Array(); 
arr1['1'] = ({label: "test1"}); 
arr1['2'] = ({label: "test2"}); 
arr1['3'] = ({label: "test3"}); 
associativeDD.dataProvider = arr1; 

var arr2:Array = new Array(); 
arr2.push({label: "test1"}); 
arr2.push({label: "test2"}); 
arr2.push({label: "test3"}); 
indexedDD.dataProvider = arr2; 

這裏是什麼樣子:

flex dropdowns

有一個在一個地方給我分配的數據提供程序使用關聯數組開頭的空白點,有沒有辦法做到這個「正確」,以便它看起來像索引的那樣正確嗎?

回答

0

的Actionscript陣列是基於零的和稀疏。這意味着,如果創建一個數組並插入與索引1的第一個元素,該陣列將具有2大小和元件與索引0undefined

因此,要獲得相同的結果,則需要在關聯數組的情況下,開始與指數0