Кажущееся противоречивым поведение при назначении dataProvider в PopUpMenuButton 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>

Однако когда я использую Actionscript для присвоения значений dataProvider, я получаю два разных результата в зависимости от того, использую ли я ассоциативный массив или индексированный.

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;

Вот как это выглядит:

гибкие выпадающие

В начале того места, где я назначил dataProvider с помощью ассоциативного массива, есть пустое место. Есть ли способ сделать это "правильно", чтобы он выглядел правильно, как это делает индексированный объект?

1 ответ

Массивы Actionscript начинаются с нуля и разрежены. Это означает, что если вы создадите массив и вставите первый элемент с индексом 1массив будет иметь размер 2 и элемент с индексом 0 будет undefined,

Таким образом, чтобы получить те же результаты, вам нужно начать с индекса 0 в случае ассоциативного массива.

Другие вопросы по тегам