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