首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dojo事件事件- "load“事件不会触发/捕获。

Dojo事件事件- "load“事件不会触发/捕获。
EN

Stack Overflow用户
提问于 2015-07-11 19:03:31
回答 1查看 146关注 0票数 0

我有一个继承道场/偶发的类。我在代码中调用myClass.emit("load",{})。听myClassInstance.on("load",function(){console.log("fired!")});

然而,它并没有被发射。但是有趣的是,如果我切换到myClass.emit("myClass-load",{})并听myClassInstance.on("myClass-load",function(){console.log("fire")});的话,事件就会被解雇!

我错过了什么?是因为其他对象也会监听"load“事件,因此不会被myClassInstance捕获吗?

--通常情况下, --如果两个由两个对象触发的事件具有相同的名称,会发生什么?唯一地命名每一个事件更好吗?

谢谢你,艾伦

EN

回答 1

Stack Overflow用户

发布于 2015-07-11 20:19:25

如果您的类继承了dijit/_WidgetBase,那么它对onemit的处理会有几个不同之处,我可能怀疑这是导致您的问题的原因。

首先,小部件之前的_WidgetBase 不会发出DOM事件已经调用了startup,或者在被销毁后/被销毁了。换句话说,它不会在constructorpostscriptbuildRenderingpostCreate期间发出DOM事件。

其次,_WidgetBase包含一些无可否认的复杂逻辑,用于向后兼容遗留小部件,这些小部件通过遵循onXxx命名模式的方法实现事件。尽管_WidgetBase#emit仍然会触发DOM事件,即使存在匹配的onXxx方法,但如果它首先找到onXxx方法,则会触发侦听DOM事件

因此,我建议确保两件事:

  • 在小部件上没有在emit之前调用startup
  • 这个小部件还没有一个onLoad方法

我想我要指出的最后一件事是,您不应该让类同时继承_WidgetBaseEvented,因为这可能会在小部件逻辑中造成意外的副作用,特别是在扩展现有的Dijit小部件时。仅仅扩展_WidgetBase就足够了,因为它已经定义了自己的emiton (上面链接的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31360745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档