Поскольку компонент Repeater не будет генерировать radiobuttongroup в mxml, и поскольку я не могу сделать то же самое с помощью ActionScript, потому что radiobuttongroup не имеет свойства id, когда я пытаюсь создать его таким образом, есть способ отключить radiobuttons совсем? Насколько я вижу, единственное, что я могу установить и получить доступ - это свойство groupName радиокнопок.
Для компонента Repeater я попытался использовать xml напрямую
<mx:XML id="xquiz" source="quiz.xml" />
с этим кодом:
<mx:Repeater dataProvider="{xquiz.question}" id="rep">
<mx:Label text="{rep.currentItem.content}" />
<mx:Repeater dataProvider="{rep.currentItem.answer}" id="rep2">
<mx:RadioButton label="{rep2.currentItem}" groupName="{'rbg'+rep.currentIndex}" click="checkAnswers(event)" value="{rep2.currentItem.@correct}" />
</mx:Repeater>
</mx:Repeater>
и не может использовать ретранслятор для генерации радиобутгруппы, так как это не видимый компонент.
Я также попробовал подход ActionScript, но с компонентом HTTPService mxml для извлечения файла XML.
<mx:HTTPService id="srv" url="quiz.xml" resultFormat="e4x" result="handleResult(event);" fault="handleFault(event);"/>
и вот фрагмент ActionScript:
private var xQuizData:XML
private function handleResult(event:ResultEvent):void {
xQuizData = event.result as XML;
initApp();
}
private function initApp():void {
var cnt:Number = 0;
for each (var question:XML in xQuizData.*) {
var lbl:Label = new Label();
lbl.text = question.content;
panel.addChild(lbl);
lbl.visible = true;
var cnt2:Number = 0;
for each (var answer:XML in question.answer) {
var rb:RadioButton = new RadioButton();
rb.id=String(cnt);
rb.label=answer;
rb.groupName="rbg"+String(cnt);
if (answer.hasOwnProperty("correct")) {
rb.value=true;
}
panel.addChild(rb);
rb.visible = true;
cnt2++;
}
cnt++;
}
}
Я хочу иметь возможность отлавливать клики из элементов управления радиобутгруппы, но не могу заставить их генерировать вообще, если с повторителем, или не могу назначить им идентификатор, если с помощью actioncript.
Содержимое XML будет выглядеть примерно так:
<quiz>
<question>
<content>Some question?</content>
<answer>Answer one</answer>
<answer correct="true">Answer two</answer>
<answer>Answer three</answer>
<answer>Answer four</answer>
</question>
</quiz>