1.Echanger des données entre composants

Avant, on transmettait une valeur directement à la propriété du composant, par exemple :

<MyComponent myProp= value>

Et dans MyComponent.mxml, nous avions

 <mx :script>
 < ![CDATA[
 Var :myProp :String ;
 ]]>
 </mx :script>

Ou alors, on récupérait la valeur à l’intérieur d’un composant pour la passer à un autre.

Ces méthodes sont plus faciles à mettre en place, mais le souci c’est que vos composants sont dépendants des autres (couplage fort).

C’est pourquoi, nous allons aborder une autre solution afin de faire la chose plus proprement, mais surtout cela permettra une réutilisation et une maintenabilité plus grande des composants et de l’application.

Voici le principe de l’utilisation des événements pour les échanges de données


2.Définir et Emettre nos propres événements

Définissez votre événement avec :

<mx:Metadata>
Event(“myEvent")
</mx:Metadata>

Emettez ensuite votre propre événement avec :

dispatchEvent(…);

Vous trouverez plus de detail dans le pack. Et voici un exemple simple de ce que vous aurez :

<mx:Metadata>
Event(“typeEvent")
</mx:Metadata>
<mx:Script> 
<![CDATA[
function makeEvent():Void {
dispatchEvent(
new CustomEvent(“typeEvent”, “My own data”));
}
]]>
</mx:Script>
<mx:Button label="Button" click="makeEvent()" />

3.Gérer nos propres événements

Gérer les événements spécifiques des composants comme s’il s’agissait d’événements standards

<mx:Button click="ActionScript">

Vous pouvez affecter les valeurs de l’objet événement à des variables de l’application (ou des champs de modèle) de façon qu’elles puissent être passées/utilisées par d’autres componants

Exemple :

<mx:Script>
<![CDATA[
Bindable
public var newProp:String;
]]>
</mx:Script>

<MyComp1 typeEvent="newProp=CustomEvent(event).myOwnData"/>
<MyComp2 myProp="{newProp}"/>

Ici dès que l’événement « event » est emis, sa valeur est affectée à « newProp » qui sera transférée à la propriété du comp2.

Téléchargement

télécharger le pack du chapitre 12 :flex 2 - Echanger des données entre composants