为什么我用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/
答案 0 :(得分:1)
您的jsfiddle显示您只加载node
。要拥有事件,您必须加载其中一个事件模块。实际上,您的代码在调用publish
时失败,emitFacade: true
是事件提供的第一个找到的方法。
一般情况下,请检查API文档以查找失败的方法,并查看哪个模块提供了这些方法(“从方法标题下方的'继承')并确保已加载相应的模块。
- 根据更新的JSFiddle更新:
将Base
添加到已发布事件的配置中。 YUI会自动为从Node
继承而不是为其他人继承的类执行此操作。对于{{1}}个实例,您必须明确添加该选项。