2008-12-04 7 views
1

J'essaie de créer un éditeur de questions XML en flash. Fondamentalement, je charge dans le fichier XML dans un composant Tree - XML ​​comme ceci:Flex - liaison de données d'un arbre à un répéteur

<questions> 
<question id="1" type="radio" text="This is question 1" isBranch="true"> 
    <option id="1.1" correct="false" text="This is option 1" /> 
    <option id="1.2" correct="false" text="This is option 2" /> 
    <option id="1.1" correct="false" text="This is option 1" /> 
    <option id="1.2" correct="false" text="This is option 2" /> 
    <option id="1.3" correct="true" text="This is option 3" /> 
    <option id="1.4" correct="false" text="This is option 4" /> 
</question> 
<question id="2" type="check" text="This is question 2" isBranch="true"> 
    <option id="2.1" correct="true" text="This is option 1" /> 
    <option id="2.2" correct="false" text="This is option 2" /> 
    <option id="2.3" correct="true" text="This is option 3" /> 
</question> 
</questions> 

Alors qui va dans l'arbre. Lors de la modification, j'obtiens une liste des options pour la question sélectionnée (item..option) - et que XMLList est passé dans un composant (personnalisé). Ce composant (pas sûr si c'est la meilleure façon de s'y prendre mais encore ...) - a un couple de contrôles Repeater - un qui est lié à XMLList pour une question de radio, l'autre lié à la XMLList d'un case à cocher question Chaque répéteur boucle le nombre d'options, en plaçant un TextInput dans (pour éditer le texte d'option) et une radio ou une case à cocher (selon le type de question)

Alors - ce que je suis après est quand le texte est édité pour une option, le code XML dans ce TextInput est lié au code XML qui est le dataProvider pour l'arborescence. Par exemple, si "Ceci est l'option 1" devient "Ceci est l'option Foo" - l'arborescence est mise à jour avec cela. (. Par exemple, pour les radios)

Jusqu'à présent, mon répéteur est comme ce

<mx:Repeater id="repeaterRadio" dataProvider="{optionsListRadio}">  
    <mx:TextInput width="359" id="radioText" 
    editable="true" enabled="true" text="{[email protected]}"/> 
    <mx:RadioButton id="radioArray" 
    data="{[email protected]}" 
    selected="{[email protected]=='true'}"/> 
</mx:Repeater> 

Pas de travaux obligatoires - tout ce que je reçois ici est des avertissements comme:

warning: unable to bind to property 'text' on class 'XML' (class is not an IEventDispatcher) 

Je reçois en quelque sorte pourquoi ce C'est le cas, mais je ne sais pas comment lier les données que l'utilisateur peut modifier dans le fichier XML source. Je sais que je peux rendre l'arbre lui-même modifiable, mais ce n'est pas vraiment une option ici.

Donc des pointeurs ou des idées seraient très appréciés!

Répondre

0

juste repeaterRadio.currentItem remplacent. @ texte avec XML (repeaterRadio.currentItem). @ texte ...

Questions connexes