2009-11-30 17 views
0

Comment créer un événement personnalisé bouillonnant dans Flex 4?Événement personnalisé Flex 4 Bubbling

Pour créer et exposer un événement personnalisé dans MXML, vous devez déclarer à la composante qui va distribuer l'événement avec cette ligne:

<fx:Metadata> 
     [Event(name="select", type="my.engine.events.SelectionEvent")] 
</fx:Metadata> 

Cela vous permet de:

<my:CustomComponent select="doSomething()"/> 

Cependant, comment faites-vous cette bulle vers le haut. Je veux le faire

<s:DataGroup select="doSomethingForAll();"> 
    <s:itemRenderer> 
     <fx:Component> 
     <my:CustomComponent/> 
     </fx:Component> 
    </s:itemRenderer> 
</s:DataGroup/> 

Merci!

Répondre

0

Une solution possible mais pas exactement ce que je cherchais est d'ajouter cette ligne de code au niveau DataGroup.

this.addEventListener(SelectionEvent.SELECTED, onSelect); 

Cela garantira que tous les événements déclenchés par CustomComponent sont résolus.

0

Vous pouvez étendre s: conteneur DataGroup avec des informations précises de données metatag personnalisés intégrés dans la catégorie supérieure ou vous pouvez appeler la méthode « doSomethingForAll() » du gestionnaire d'événements « select » de itemRenderer, voir le code ci-dessous:

<s:DataGroup   
    dataProvider="{instructions}"   
    width="100%">   
    <s:itemRenderer> 
     <fx:Component> 
      <my:CustomComponent      
       select="rendererSelect()"> 
       <fx:Script> 
        <![CDATA[ 

         protected function rendererSelect():void 
         { 
          outerDocument.doSomethingForAll(); 
         } 

        ]]> 
       </fx:Script> 
      </my:CustomComponent> 
     </fx:Component> 
    </s:itemRenderer>     
</s:DataGroup> 
0

Catch the dataGroups événement select, puis envoyer une doSomethingForAll()

Assurez-vous que l'événement a doSomethingForAll sa propriété bouillonnante valeur true.

Ensuite, tous les écouteurs d'événements écoutant doSomethingForAll au-dessus de la liste d'affichage seront appelés.

1

Votre événement personnalisé doit étendre l'événement. Sur le constructeur, vous trouverez name:string, bubbling:boolean et cacellable:boolean comme arguments.

Définissez le paramètre de bouillonnement sur true. Dans votre exemple, la balise de métadonnées doit figurer dans votre balise DataGroup.