0

我目前正在尝试模仿这种enyo.Popup行为。我查看了源代码github但很难理解它。

特别是我遇到问题的代码:

handlers: {
    //...
    onRequestShow: "requestShow",
    onRequestHide: "requestHide"
},

//* @public
events: {
    //* Fires after the popup is shown.
    onShow: "",
    //* Fires after the popup is hidden.
    onHide: ""
},

在代码的其他地方,还有对this.show().

首先,我没有找到this.show(). 其次,虽然我假设它必须分别在内部this.show()this.hide(),但在哪里调用onShow和事件?onHide

最后,我定义了一种自己,也包含上面的代码。但是尽管show()andhide()方法有效,但我自己的requestShow()andrequestHide()方法没有被调用。

我错过了什么?

4

1 回答 1

2

首先,show是在 enyo.Control 上声明的函数:http ://enyojs.com/api/#enyo.Control::show

onShow并且onHide是可以由弹出窗口的所有者订阅的事件(因此,它们在事件块中的声明)。它们在showingChanged函数中被调用。调用事件的方法是 do{EventNameWithoutOn}。在这种情况下: doShow

查看有关事件的文档:https
://github.com/enyojs/enyo/wiki/Event-Handling (或者,您可以购买我的精美 Enyo 书! http: //roysutton.com/2013/01/31/print-书现在可用/

处理程序块是控件订阅它(或其子)生成的消息的一种方式。话虽如此,我在代码中看不到任何生成onRequestHide事件的地方。

我希望这会有所帮助!

于 2013-03-06T22:07:53.267 回答