2013-09-26 13 views
11

Desidero che un elemento figlio invii un evento personalizzato e l'elemento padre lo ascolti e intraprende qualche azione. Come posso farlo quando lavoro con Polymer?Come spedisci e ascolta eventi personalizzati in Polymer?

+0

possibile duplicato di [Come faccio sparo un evento personalizzato da Polymer Dart ?] (http://stackoverflow.com/questions/18971511/how-do-i-fire-a-custom-event-from-polymer-dart) –

risposta

14

È possibile inviare un evento personalizzato da un polimero elemento come questo:

dispatchEvent(new CustomEvent('nameOfEvent')); 

Poi, elemento genitore può intercettare l'evento personalizzato come questo:

<child-element on-childspeaks="fireAway"></child-element> 

Ecco più completo esempio che mostra come funziona. In primo luogo, qui è la codice per l'elemento figlio:

<!DOCTYPE html> 

<polymer-element name="child-element"> 
    <template> 
    <div on-click="dispatch">I am a child</div> 
    </template> 
    <script type="application/dart"> 
    import 'dart:html'; 
    import 'package:polymer/polymer.dart'; 

    @CustomTag('child-element') 
    class ChildElement extends PolymerElement with ObservableMixin { 

     dispatch(Event e, var detail, Node sender) { 
     print('dispatching from child'); 
     dispatchEvent(new CustomEvent('childspeaks')); 
     } 
    } 
    </script> 
</polymer-element> 

Ed ecco il codice per l'elemento principale:

<!DOCTYPE html> 
<link rel="import" href="child_element.html"> 
<polymer-element name="parent-element"> 
    <template> 
    <div>I am the parent</div> 
    <child-element on-childspeaks="fireAway"></child-element> 
    </template> 
    <script type="application/dart"> 
    import 'dart:html'; 
    import 'package:polymer/polymer.dart'; 

    @CustomTag('parent-element') 
    class ParentElement extends PolymerElement with ObservableMixin { 

     void fireAway() { 
     window.alert('The child spoke, I hear'); 
     } 
    } 
    </script> 
</polymer-element> 
+0

È necessaria la parte 'with ObservableMixin'? –

Problemi correlati