1

ここに記載されているように、Dojoのpub/subトピックモジュールを使用しようとしています。カスタムウィジェットのstartup()メソッド内のイベントをサブスクライブしていて、トピックがトリガーされたときにウィジェットを変更したいと思います。

topic.subscribe()コールバックからウィジェットにアクセスするにはどうすればよいですか?コールバック内ではthis、ウィジェットを参照しません。それが何を指しているのかわかりません...thisオブジェクトにはemiton関数が含まれているだけでなく、のdeclaredClassようなフィールドもあります"uniqName_0"

4

2 に答える 2

2

dojo/_base/lang::hitchウィジェット メソッド内でサブスクライブするときに、コールバック関数のスコープを変更するために使用します。ここでthis、ウィジェット インスタンスを参照します。ここにはいくつかのオプションがあります。

  1. 無名関数:

    topic.subscribe("topic/some", lang.hitch(this, function() {
        // your callback logic here
    }));
    
  2. ウィジェットの方法:

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

実際に見てみましょう: http://jsfiddle.net/phusick/N7NGB/

于 2012-04-12T10:09:09.440 に答える
1

ウィジェットには、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と、ウィジェットが破棄されるときに メソッドとメソッドが自動的に呼び出されます。connectunsubscribedisconnect

http://dojotoolkit.org/api/dijit/_WidgetBase

于 2012-04-12T10:31:56.873 に答える