0

で指定すると、イベントのデフォルト関数が実行されないのはなぜdefaultFnですか?

var node = Y.one(".foo");

node.publish("myEvent", {
    defaultFn: function () {
        //I don't understand why this doesn't execute
        //I expect it to execute after my on listener
        //and before my after listener
        Y.log("In default function");
    }
});

node.before("myEvent", function () {
    Y.log("In before listener");
 });
node.on("myEvent", function () {
    Y.log("In on listener");
});
node.after("myEvent", function () {
   Y.log("In after listener");
});

node.fire("myEvent");

JSFiddle: http://jsfiddle.net/steaks/rUacD/

4

1 に答える 1

1

あなたのjsfiddleは、ロードのみを示していますnode。イベントを作成するには、イベント モジュールの 1 つをロードする必要があります。たまたま、publishイベントが提供する最初のメソッドである の呼び出しでコードが失敗します。

一般に、API ドキュメントで失敗したメソッドを確認し、それらを提供するモジュール (メソッドの見出しのすぐ下にある「継承元」) を確認し、対応するモジュールがロードされていることを確認します。

-- 新しい JSFiddle に従って更新:

emitFacade: true発行されたイベントの構成に追加します。YUI は、継承元のクラスに対してはこれを自動的に行いますが、それ以外のクラスに対してBaseは行いません。たとえばNode、そのオプションを明示的に追加する必要があります。

于 2013-08-09T06:45:29.970 に答える