我正在尝试创建一个自定义 Dojo 类,它会发出一个自定义事件,并且我正在尝试从调用类监听该事件。
我还没有找到一个完整的示例,所以我被困在这里。
我尝试过以下方法:
在我的自定义类中,我有以下代码:
on.emit(this, "PointFound", {
Msg:"Found a point Within minDistance",
point:selctedPoint
});
这不会导致任何错误。我陷入困境的是如何聆听。
当我尝试时(在正确初始化类之后):
on(findUtilInstance,"PointFound", function(e){
console.log(e);
});
我收到一条错误消息:错误:目标必须是事件发射器
当我尝试时(正确初始化类后):
findUtilInstance.on("PointFound", function(e){
console.log(e);
});
我收到错误:TypeError:findUtilInstance.on 不是函数
Dojo 1.11.2 中触发自定义事件并接收它们的正确方法是什么?
最佳答案
dojo/on
它仅适用于 DOM 节点,如果您从 dijit/_WidgetBase
扩展,它就可以工作,然后您可以使用一个名为 on() 的方法,用于示例:
myWidget.on("customevent", function(data) {
console.log( " received notification "+data );
});
如果您从 dojo/_base/declare
扩展,您可以考虑使用 dojo/topic
并实现发布-订阅模式。
它允许“类/模块”相互通信。
dojo/topic provides a centralized hub for publishing and subscribing to global messages by topic. Topics can be subscribed to by using topic.subscribe(), and messages can publish by using topic.publish().
基本上,您可以使用 dojo/topic
来:
- 向您的类的一个或多个实例广播(发布)消息(事件/主题)。
- 您可以在每个实例中监听(订阅)您的消息并在其中应用您的逻辑。
require(["dojo/topic"], function(topic){
topic.subscribe("some/topic", function(){
console.log("received:", arguments);
});
// ...
topic.publish("some/topic", "one", "two");
});
关于javascript - 如何从自定义类发出自定义事件并在 Dojo 1.11 中监听它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41843778/