2015-06-12 11 views

Antwort

10

paper-dialog erbt die Polymer.IronOverlayBehavior, die die iron-overlay-opened und iron-overlay-closed Events.

<paper-dialog 
    on-iron-overlay-opened="_myOpenFunction" 
    on-iron-overlay-closed="_myClosedFunction"></paper-dialog> 

https://elements.polymer-project.org/elements/iron-overlay-behavior?active=Polymer.IronOverlayBehavior

+0

Sie arbeiten zu verbessern Das. Im Moment empfehle ich, die verknüpften Verhaltensweisen am unteren Ende der Seite einer Komponente zu untersuchen, da die Komponente alle Eigenschaften oder Methoden dieser Verhaltensweisen erbt. Demnächst werden sie in der Lage sein, sie direkt in die Komponentendokumentation aufzunehmen, damit Ereignisse wie diese leichter zu finden sind. – Zikes

+0

Ja stimme mit Ihnen, Vielen Dank @ Zikes –

+5

Danke, @Zikes. Seltsamerweise konnte ich das nicht zur Arbeit bringen. Ich habe eine unabhängige Funktion definiert, die ich wie oben angegeben übergeben habe, aber der Rückruf hat nicht ausgelöst. Ich habe dies mit der Methode 'addEventListener ('Eisen-Overlay-geschlossen') 'zu arbeiten. –

2

Auch ist dieses alte Thema, gibt es noch 1 ist, dass die Leute wissen sollten und sich bewusst sein:

empfehle ich Ihnen auch event.target in Ihrem Listener-Funktion zu überprüfen. Wenn Sie beispielsweise ein anderes Element verwenden, das iron-overlay innerhalb paper-dialog verwendet, wird das Schließen dieser Elemente Listener auf paper-dialog auslösen. (Sie können dies mit vaadin-date-picker versuchen).

So:

<paper-dialog on-iron-overlay-closed="_myClosedFunction"></paper-dialog> 

und dann _myClosedFunction:

_myClosedFunction(e) { 
    if(e.target.nodeName == "PAPER-DIALOG") { 
    //...toDo stuff... 
    } 
} 

Jetzt sind Sie garantiert, dass, wenn nur Papier-Dialog geschlossen wird, wird der Code ausgeführt