2015-06-12 18 views

Trả lời

10

paper-dialog thừa hưởng các Polymer.IronOverlayBehavior, trong đó có các iron-overlay-openediron-overlay-closed sự kiện.

<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

Họ đang làm việc để cải thiện cái đó. Hiện tại, tôi khuyên bạn nên khám phá các Hành vi được liên kết ở cuối trang của một thành phần, vì thành phần đó sẽ kế thừa bất kỳ Thuộc tính hoặc Phương thức nào của những Hành vi đó. Chẳng mấy chốc họ sẽ có thể đưa chúng trực tiếp vào tài liệu thành phần, điều này sẽ làm cho các sự kiện như thế này dễ tìm hơn. – Zikes

+0

Có đồng ý với bạn, Cảm ơn rất nhiều @Zikes –

+5

Cảm ơn, @Zikes. Thật kỳ lạ, tôi không thể làm việc này. Tôi đã xác định một chức năng độc lập mà tôi đã truyền vào như bạn đã nói ở trên, nhưng cuộc gọi lại không được kích hoạt. Tôi đã sử dụng phương pháp này, 'addEventListener ('iron-overlay-closed')' thay thế. –

2

Thậm chí đây là chủ đề cũ, vẫn còn 1 điều mà mọi người nên biết và nhận thức được:

tôi khuyên bạn nên bạn cũng phải kiểm tra event.target bên trong chức năng nghe của bạn. Ví dụ: nếu bạn có phần tử khác bằng cách sử dụng iron-overlay bên trong paper-dialog, việc đóng các yếu tố đó sẽ kích hoạt trình nghe trên paper-dialog. (bạn có thể thử điều này với vaadin-date-picker).

Vì vậy:

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

và sau đó _myClosedFunction:

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

Bây giờ bạn được đảm bảo rằng bất cứ khi nào chỉ giấy thoại được đóng lại, mã của bạn sẽ được thực hiện

Các vấn đề liên quan