2016-07-22 3 views
-1

J'essaie de faire fonctionner deux tests différents de la même manière.Comportement apparemment incohérent lors de l'affectation de dataProvider à PopUpMenuButton de Flex

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

Lorsque j'utilise actionscript pour affecter les valeurs dataProvider, il me semble cependant d'obtenir deux résultats différents selon que j'utilise un tableau associatif ou sur une autre indexée.

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; 

Voici à quoi il ressemble:

flex dropdowns

Il y a une place vide au début de celui où j'affecté le fournisseur de données en utilisant un tableau associatif, est-il possible de le faire ce "correctement" de sorte qu'il semble correct comme le fait l'indexé?

Répondre

0

Les tableaux Actionscript sont basés sur zéro et clairsemés. Cela signifie que si vous créez un tableau et insérez le premier élément avec l'index 1, le tableau aura la taille de 2 et l'élément avec l'index 0 sera undefined. Pour obtenir les mêmes résultats, vous devez commencer par l'index 0 dans le cas d'un tableau associatif. Pour obtenir les mêmes résultats, vous devez commencer par l'0.