如何从自定义类发出自定义事件并在 Dojo 1.11 中侦听它



>我正在尝试创建一个发出自定义事件的自定义 Dojo 类,并且我正在尝试从调用类侦听该事件。

还没有找到一个完整的示例,我被困在这里。

我尝试了以下方法:

在我的自定义类中,我有以下代码:

   on.emit(this, "PointFound", {
           Msg:"Found a point Within minDistance",
           point:selctedPoint
           });

这不会导致任何错误。我被困在如何听它的地方。

当我尝试(正确初始化类后)时:

            on(findUtilInstance,"PointFound", function(e){
                console.log(e);
            });

我收到一条错误消息:Error: Target must be an event emitter

当我尝试(正确初始化类后)时:

            findUtilInstance.on("PointFound", function(e){
                console.log(e);
            });

我收到错误:TypeError: findUtilInstance.on is not a function

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 为发布和订阅提供了一个集中的中心 按主题到全球消息。可以使用以下方法订阅主题 topic.subscribe(),消息可以使用 topic.publish() 发布。

基本上,您可以将dojo/topic用于:

  • 将消息(事件/主题)广播(发布)到类的一个或多个实例。
  • 从每个实例中,您可以收听(订阅)您的消息并在那里应用您的逻辑。

require(["dojo/topic"], function(topic){
    topic.subscribe("some/topic", function(){
        console.log("received:", arguments);
    });
    // ...
    topic.publish("some/topic", "one", "two");
});

相关内容

  • 没有找到相关文章

最新更新