簡體   English   中英

如何處理dojo.Stateful小部件的初始值?

[英]How to handle the initial value of a dojo.Stateful widget?

我正在使用dijit.form.Select小部件。 由於所有dojo小部件都基於dojo.Stateful,因此可以監視屬性更改。 我正在跟蹤“選擇”小部件的value屬性,並且一切正常。 例如:

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

但是,當控件的value屬性更改時,此方法有效。 但是,如何為小部件的初始值(未定義oldVal時)調用相同的函數( watch方法的第二個參數)? 默認情況下,在這種情況下不會觸發watch

如您所說,監視功能將不會在加載小部件時觸發。 但是,如果您需要使用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函數。 “選擇”小部件啟動時,將使用初始值來調用它。

var CustomSelect = declare(Select, {
  _setValueAttr: function(val) {
     this.inherited(arguments);  // Allow dojo to handle the complex Select widget logic
     // Do custom stuff with val...
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM