Javascript YUI自定义事件默认函数未执行

Javascript YUI自定义事件默认函数未执行,javascript,events,yui,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

当我用
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");

jsiddle:

您的jsiddle显示您只加载
节点
。要生成事件,必须加载其中一个事件模块。碰巧,您的代码在调用
publish
(事件提供的第一个找到的方法)时失败

通常,检查API文档中失败的方法,并查看哪个模块提供这些方法(“继承自”位于方法标题的正下方),并确保已加载相应的模块

-- 根据更新的JSFIDLE更新:


将emitFacade:true添加到已发布事件的配置中。YUI会自动为继承自
Base
的类执行此操作,但不会为其他类执行此操作。对于
节点
实例,必须明确添加该选项。

我确实有事件。这就是为什么我可以开火并聆听事件。当我添加
事件自定义时,它仍然不起作用:现在,在版本4中,您第一次显示的JSFIDLE中没有任何事件。您会发现版本1与版本4相同。我试图按照您的建议加载事件模块。然后,当我没有找到解决方案时,我还原了我的更改。作为对您编辑的响应。我已经试着把它设置为真。没有骰子。关于默认函数的文档也表明defaultFn不依赖于emotFacade?那么也许我看错了第一段: