Javascript 从topic.subscribe';s回调

Javascript 从topic.subscribe';s回调,javascript,dojo,publish-subscribe,Javascript,Dojo,Publish Subscribe,我正在尝试使用Dojo的发布/子主题模块,如文档所示。我正在订阅自定义小部件的startup()方法中的事件,并希望在触发主题时修改小部件 如何从主题.subscribe()回调中访问小部件?在回调中,此不涉及小部件;我不确定它指的是什么。。。这个对象包括emit和on函数,以及一个declaredClass字段,它看起来像“uniqName\u 0”您想在小部件方法内部订阅时使用dojo/\u base/lang::hitch来更改回调函数的范围,其中,此指的是小部件实例。您在这里有几个选项:

我正在尝试使用Dojo的发布/子主题模块,如文档所示。我正在订阅自定义小部件的
startup()
方法中的事件,并希望在触发主题时修改小部件


如何从
主题.subscribe()
回调中访问小部件?
在回调中,
不涉及小部件;我不确定它指的是什么。。。
这个
对象包括
emit
on
函数,以及一个
declaredClass
字段,它看起来像
“uniqName\u 0”

您想在小部件方法内部订阅时使用
dojo/\u base/lang::hitch
来更改回调函数的范围,其中,
指的是小部件实例。您在这里有几个选项:

  • 匿名函数:

    topic.subscribe("topic/some", lang.hitch(this, function() {
        // your callback logic here
    }));
    
  • 使用widget的方法:

    topic.subscribe("topic/some", lang.hitch(this, "callbackMethod"));
    

  • 查看它的操作:

    小部件有一些方便的方法,可以按照phusick的描述处理挂接

    在启动方法中,您可以编写

    startup: function() {
      this.inherited(arguments);
    
      this.subscribe('topic/some', '_onTopic');
    },
    
    _onTopic: function() {
      this.something // 'this' is the widget
    }
    
    小部件还有其他方便的方法

    this.unsubscribe
    this.connect
    this.disconnect
    
    当使用
    subscribe
    connect
    方法时,当小部件被销毁时,将自动调用
    unsubscribe
    disconnect
    方法