0

私は dijit.form.Select ウィジェットを使用しています。すべての dojo ウィジェットは dojo.Stateful に基づいているため、プロパティの変更を監視できます。valueSelect ウィジェットのプロパティを追跡していますが、すべて正常に動作します。例えば:

this.select.watch("value", lang.hitch(this, function (attr, oldVal, newVal) {
...

ただし、このアプローチvalueは、ウィジェットのプロパティが変更されたときに機能します。しかし、ウィジェットの初期値に対して同じ関数 (メソッドの 2 番目のパラメーター) を呼び出すにはどうすればよいwatchでしょうか (oldVal が未定義の場合)。この場合、デフォルトwatchでは起動しません。

4

1 に答える 1

1

あなたが言ったように、あなたの時計機能はあなたのウィジェットをロードしても起動しません。ただし、関数を Select の初期値で呼び出す必要がある場合は、事前に関数を定義してから、次のように両方の場所で使用できます。

var myFunction = function(attr, oldVal, newVal) {
  // Do something useful
}

var initVal = this.select.get("value");
myFunction(null, null, initVal); 

this.select.watch("value", lang.hitch(this, myFunction));

または、カスタム ウィジェットを拡張してその機能dijit/form/Selectをオーバーライドすることもできます。_setValueAttrこれは、Select ウィジェットが起動するまでに初期値で呼び出されます。

var CustomSelect = declare(Select, {
  _setValueAttr: function(val) {
     this.inherited(arguments);  // Allow dojo to handle the complex Select widget logic
     // Do custom stuff with val...
  }
});
于 2013-07-21T16:06:25.840 に答える