[英]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.