我目前正在尝试模仿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()
事件在哪里被调用?
最后,我定义了一种自己,包含上面的代码。但是,尽管hide()
和requestShow()
方法正在运行,但我没有调用我自己的requestHide()
和{{1}}方法。
我错过了什么?
答案 0 :(得分:2)
首先,show
是在enyo.Control上声明的函数:http://enyojs.com/api/#enyo.Control::show
onShow
和onHide
是弹出窗口所有者可以订阅的事件(因此,它们在事件块中的声明)。它们在showingChanged
函数中调用。调用事件的方法是{EventNameWithoutOn}。在这种情况下:doShow
。
查看有关事件的文档:https://github.com/enyojs/enyo/wiki/Event-Handling
(或者,你可以买我好的Enyo书!http://roysutton.com/2013/01/31/print-book-now-available/)
处理程序块是控件订阅它(或其子代)生成的消息的一种方式。话虽如此,我在代码中看不到任何生成onRequestHide
事件的地方。
我希望有所帮助!