Bonjour à tous,
Je débute en Flex et suis confronté à un problème dans la création d'un composant.
Le problème dans mon application pourrait-être exemplifié comme suit :
Le composant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?xml version="1.0" encoding="UTF-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:Script>
<![CDATA[
[Bindable]
private var str:String;
public function set text(str:String):void
{
this.str = str;
}
public function get text():String
{
return input.text;
}
]]>
</mx:Script>
<mx:Form>
<mx:FormItem>
<mx:TextInput id="input" text="{this.str}" />
</mx:FormItem>
</mx:Form>
</mx:Canvas> |
L'application :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
<?xml version="1.0" encoding="UTF-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" usePreloader="true" xmlns:component="component.*">
<mx:Script>
<![CDATA[
public function clickHandler(event:Event):void
{
mx.controls.Alert.show(composant.text);
mx.controls.Alert.show(query.request.message);
}
]]>
</mx:Script>
<mx:HTTPService id="query" url="http://www.google.be" useProxy="false" method="post" result="mx.controls.Alert.show(event.toString())" fault="mx.controls.Alert.show(event.toString())">
<mx:request>
<message>{composant.text}</message>
</mx:request>
</mx:HTTPService>
<mx:Panel>
<component:composant id="composant" text="Hello World" />
<mx:Button click="clickHandler(event)" label="Afficher le texte" />
</mx:Panel>
</mx:Application> |
A la compilation tout se déroule convenablement à l'exception de ce message
Warning: Data binding will not be able to detect assignments to "text".
(concerne la ligne <message>{composant.text}</message>)
Lors du clic sur le bouton la premiere action se déroule sans problème, j'affiche bien le contenu de mon TextInput.
mx.controls.Alert.show(composant.text);
Pour la deuxième action (celle qui m'intéresse le plus), l'alert s'affiche correctement mais le contenu est vide.
mx.controls.Alert.show(query.request.message);
La méthode qui m'intéresse particulièrement est de pouvoir récupérer "composant.text" dans ma requête et l'envoyer sans devoir passer par une multitude de fonction actionscript et je ne veux pas modifier mon private str:String en public str:String.
Quelqu'un aurait-il l'astuce que je ne trouve pas (ou ne comprend pas en ayant le nez dessus) ?
Un très grand merci d'avance.
Partager