对于 Polymer 1.0,如何在 <paper-dialog> 关闭或关闭时执行函数?

How do I execute a function on-close or on dismiss of <paper-dialog> for Polymer 1.0?

问题:

How do I automatically execute a function whenever my <paper-dialog> element is closed?

版本:聚合物 1.0

代码:

<paper-dialog id="paper-id"
              entry-animation="scale-up-animation"
              exit-animation="scale-down-animation">
    <sample-element></sample-element>
</paper-dialog>

paper-dialog 继承了 Polymer.IronOverlayBehavior,它有 iron-overlay-openediron-overlay-closed 事件。

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

尽管这是老话题,但仍有一件事是人们应该知道和注意的:

我强烈建议您也检查 event.target 在您的侦听器函数中。例如,如果您有另一个元素在 paper-dialog 中使用 iron-overlay,关闭该元素将触发 paper-dialog 上的侦听器。 (你可以用 vaadin-date-picker 试试这个)。

所以:

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

然后 _myClosedFunction:

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

现在你可以保证只要纸质对话框关闭,你的代码就会被执行