我試圖使用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"));