javascript - 如何从自定义类发出自定义事件并在 Dojo 1.11 中监听它?

标签 javascript events dojo event-handling

我正在尝试创建一个自定义 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/

相关文章:

javascript - 传单 Angular Directive(指令)中的 KML

JavaScript 箭头函数赋值

javascript - JS onMouseDown 和 onMouseUp 事件 Safari iPhone : can not make them working

c# - 使用事件 'source' 的嵌套对象指针是否正确?

javascript - xpages 水平 slider 抛出 JavaScript 错误

javascript - Chrome 扩展中的持久服务 worker

javascript - 如何删除/删除 JavaScript function()?

javascript - 如何禁用浏览器的clt+u?

javascript - 道场移动文本框

javascript - dojo如何覆盖事件处理程序