2016-07-22 29 views
-1

Ich versuche, zwei verschiedene Test Dropdown-Menüs auf die gleiche Weise zu erhalten.Scheinbar inkonsistentes Verhalten bei der Zuweisung von DataProvider zu Flex's 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> 

Wenn ich jedoch Actiondatenprovider Werte zuzuzuweisen, scheinen I in Abhängigkeit von zwei verschiedenen Ergebnisse zu erhalten, ob ich eine assoziative Array oder ein indiziert man verwenden.

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; 

Hier ist, wie es aussieht:

flex dropdowns

Es am Anfang des einen eine leere Stelle, wo ich die Datenprovider zugewiesen, ein assoziatives Array verwendet, ist es eine Möglichkeit, zu tun dies "richtig", so dass es richtig aussieht, wie das indizierte?

Antwort

0

Actionscript-Arrays sind nullbasiert und spärlich. Wenn Sie also ein Array erstellen und das erste Element mit dem Index 1 einfügen, hat das Array die Größe 2 und das Element mit dem Index 0 wird undefined sein.

Um die gleichen Ergebnisse zu erhalten, müssen Sie mit dem Index 0 im Falle eines assoziativen Arrays beginnen.