我试图使用Dojo的pub/sub主题模块here。我正在订阅自定义小部件的startup()
方法中的事件,并且想要在主题被触发时修改小部件。从topic.subscribe的回调访问小部件
如何从topic.subscribe()
回调中访问控件?在回调中,this
没有引用小部件;我不确定它是指什么... this
对象包括emit
和on
函数,以及declaredClass
字段看起来像"uniqName_0"
。
我试图使用Dojo的pub/sub主题模块here。我正在订阅自定义小部件的startup()
方法中的事件,并且想要在主题被触发时修改小部件。从topic.subscribe的回调访问小部件
如何从topic.subscribe()
回调中访问控件?在回调中,this
没有引用小部件;我不确定它是指什么... this
对象包括emit
和on
函数,以及declaredClass
字段看起来像"uniqName_0"
。
w idget有一些便利的方法,可以像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
方法将自动被调用时,该小部件被销毁。
您希望使用dojo/_base/lang::hitch
更改订阅内部窗口小部件方法时回调函数的作用域,其中this
引用窗口小部件实例。你有几个选择这里:
匿名函数:
topic.subscribe("topic/some", lang.hitch(this, function() {
// your callback logic here
}));
控件的方法:
topic.subscribe("topic/some", lang.hitch(this, "callbackMethod"));