динамически генерировать имя ComboBox - PullRequest
0 голосов
/ 07 декабря 2009

У меня есть скрипт, который анализирует некоторые сложные XML. Когда элемент XML имеет определенный тип, он генерирует comboBox, используя дочерние элементы элемента XML для заполнения поля. Затем я хочу проверить все значения всех сгенерированных ComboBox на их правильные ответы (которые также хранятся в файле XML). При создании ComboBox я добавил свойство "id". Тем не менее, кажется, что я не могу их использовать:

dynamicQuestion.id.selectedItem.labelField

чтобы проверить ответы. Однако я могу получить labelField, если знаю имя переменной, использованной для создания ComboBox.

dynamicQuestion.selectedItem.labelField

Это указывает (для меня), что мне нужно динамически генерировать имя переменной при создании новых экземпляров ComboBox. Но как мне динамически генерировать имя переменной? Если я использую

var thisBox:String = "box"+boxCount;
var newBox:ComboBox = thisBox as ComboBox;

Я получаю неявную ошибку принуждения. Я также попытался изменить оператор создания на функцию, которая приняла аргумент «thisBox», но это тоже не сработало. Концептуально, это кажется довольно простым, но мне трудно применить это на практике. Кажется, что идентификатор comboBox - это то, что генерируется созданным ящиком с использованием скрипта (например, var thisBox). Как мне динамически генерировать это имя?

Ответы [ 2 ]

1 голос
/ 08 декабря 2009

Используйте массив, как предложил Стефан. Если вам необходимо использовать строковые идентификаторы, вы можете создать объект и использовать его в качестве ассоциативного массива.

var combos:Object = {};

var boxCount:Number = 1;
var thisBox:String = "box"+boxCount;
//you can store comboboxes in the object using the following syntax
combos[thisBox] = new ComboBox();
//or
combos.box2 = new ComboBox();
//or
combos["box3"] = new ComboBox();

trace(combos.box1.selectedItem.labelField);
trace(combos.box2.selectedItem.labelField);
trace(combos.box3.selectedItem.labelField);
0 голосов
/ 08 декабря 2009

Почему бы вам не сохранить все ваши динамически созданные поля со списком в массиве? Когда вы хотите оценить их, вы перебираете массив и получаете доступ к selectedItem.labelField.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...