2013-07-21 18 views
0

我正在使用dijit.form.Select小部件。由於所有dojo小部件都基於dojo.Stateful可以監視屬性更改。我正在追蹤Select小部件的value屬性,並且所有工作都正常。例如:如何處理dojo.Stateful小部件的初始值?

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

但是,當小部件的value屬性改變了這種方法的工作原理。但是我怎樣才能調用相同的函數(第二個參數watch方法)的小部件的初始值(當oldVal未定義)?在這種情況下,默認watch不會被觸發。

回答

1

正如你所說,你的手錶功能在加載你的小部件時不會觸發。但是,如果你需要調用與選擇的初始值的功能,你可以簡單地事先定義函數,然後在這樣兩個地方使用它:

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)); 

或者,你可以有一個自定義的widget從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... 
    } 
});