YUI自定义事件默认功能未执行

时间:2013-08-08 16:11:30

标签: javascript events yui

为什么我用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/

1 个答案:

答案 0 :(得分:1)

您的jsfiddle显示您只加载node。要拥有事件,您必须加载其中一个事件模块。实际上,您的代码在调用publish时失败,emitFacade: true是事件提供的第一个找到的方法。

一般情况下,请检查API文档以查找失败的方法,并查看哪个模块提供了这些方法(“从方法标题下方的'继承')并确保已加载相应的模块。

- 根据更新的JSFiddle更新:

Base添加到已发布事件的配置中。 YUI会自动为从Node继承而不是为其他人继承的类执行此操作。对于{{1}}个实例,您必须明确添加该选项。