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()。第 2 に、それぞれ内にある必要があると思いますがthis.show()、イベントとイベントはどこで呼び出されますか?this.hide()onShowonHide

そして最後に、上記のコードを含む一種の自分自身を定義しました。しかし、 and メソッドが機能しているにもかかわらずshow()hide()私自身のrequestShow()andrequestHide()メソッドは呼び出されませんでした。

私は何が欠けていますか?

4

1 に答える 1

2

まず、showenyo.Control で宣言された関数です: http://enyojs.com/api/#enyo.Control::show

onShowおよびonHideは、ポップアップの所有者がサブスクライブできるイベントです (したがって、events ブロックでの宣言)。それらは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 に答える