Blog de Fennecos Un blog Flex!!

4mar/100

TextArea two-way databinding et CDATA

Lorsque l'on bind une propriété a un TextArea ou un TextInput, le databinding ne se fait que dans un seul sens, c'est à dire

<mx:TextInput text="{source}" />

Lorsque source change, le TextInput est automatiquement mis à jour, cependant, lorsque l'on écrit dans le textInput "source" n'est pas modifié.

L'une des solutions décrite dans ce blog est :

<mx:TextInput id="example" text="{source}" valueCommit="{source = example.text;}" />
//Ou pour chaque lettre entrée
<mx:TextInput id="example" text="{source}" change="{source = example.text;}" />

Mais un problème auquel j'ai était confronté est de binder le contenu d'un noeud XML contenant des balises CDATA afin de garder la mise en page.

L'une des solutions est donc la suivante :

<mx:TextArea text="{ node.text }" width="400" height="200" change="node.text=cdata(event.target.text)"/>

avec la fonction cdata qui est :

private function cdata(str:String):XML
{
        var x:XML = new XML("<text><![CDATA[" + str + "]"+"]></text>");
        return x;
}

Et voilà! la balise CDATA est automatique ajouter =)

Commentaires (0) Trackbacks (0)

Aucun commentaire pour l'instant


Laisser un commentaire


Aucun trackbacks pour l'instant