2017-02-05 5 views
0

Ich versuche, ein benutzerdefiniertes Ereignis von einem untergeordneten Element zu seinem übergeordneten Element ausgelöst, aber es funktioniert nicht mit Listeners-Objekt. Es funktioniert mit annotierten Ereignissen, aber das ist in den meisten Situationen nicht anwendbar. Wie kann ich Listener-Objekt in diesem Fall verwenden. hier ist ein Code, um das Problem zu veranschaulichen:Polymer benutzerdefinierte Ereignisse ausgelöst von Kind Element nicht durch Elternelement gefangen

<!--in child element's dom..--> 

<dom-module id="searchresult-controller"> 
    <template> 
     <style> 
      ... 
     </style> 
    </template> 
    <script type="text/javascript"> 
     Polymer({ 
      is: "searchresult-controller", 

       ready: function(){ 
        this.sendSignal(); 
      }, 

      sendSignal: function() { 
       this.fire('msg', {data: 'i love polymer'}); 
      } 
     }); 
    </script> 
</dom-module> 

<!-- in parent --> 
<dom-module id="search-controllers"> 
<template> 
    <style> 
     ... 
    </style> 
    <searchresult-controller></searchresult-controller> 
    <result-view></result-view> 
</template> 

<script type="text/javascript"> 
    Polymer({ 
     is: "search-controllers", 

     listeners: { 
      'msg': '_showAlert' 
     }, 
     _showAlert: function(e) { 
      console.log(e.detail.data); 
     } 

    }); 
</script> 

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

0

Konnten Sie versuchen, das Ereignis von searchresult-controller auf attached und nicht ready zu feuern?

ready könnte zu früh für search-controllers da, zu handhaben according to the docs, setzen Zuhörer im listeners Objekt werden während der attached Lifecycle-Veranstaltung.

Meine Schätzung ist searchresult-controller 's ready Ereignis passiert vor search-controllers' s attached Ereignis.

+0

danke eine Tonne esp für die Referenz zu d docs. Immer noch in Bezug auf Ereignisse, habe ich versucht, ein Eisensignal-Ereignis von einem main.js wie folgt zu zünden, var event = new CustomEvent ('Eisen-Signal', {'Detail': {Name: 'Aktion', Daten: "foo" }}); document.dispatchEvent (Ereignis); während ein anderes Element mit Eisensignalen zuhörte, aber keine Ergebnisse. Wie kann ich das tun, und gibt es da draußen gute Bücher über Polymer, die Sie empfehlen können, denn ich brauche eine solide Grundlage mit Verständnis für die Grundlagen des Aufbaus von Apps mit Polymer-Dank. – jobie

+1

Wie haben Sie Ihre '' eingerichtet und genauer gesagt, wie haben Sie versucht, das 'Action'-Event zu hören? Ich weiß nichts über Bücher, aber ich finde, dass das Lesen des [Quellcodes der Polymerkomponenten auf GitHub] (https://github.com/PolymerElements) Ihnen viel beibringt. –

Verwandte Themen