我需要将一些参数传递给小部件 watch 方法,以便可以在 CallBack函数
中使用它当前代码:
require(["dijit/form/NumberTextBox"], function (NumberTextBox) {
var txt = new NumberTextBox({}, "text10");
txt.watch("value", function (name, oldValue, value) {
});
});
所需代码:
require(["dijit/form/NumberTextBox"], function (NumberTextBox) {
var txt = new NumberTextBox({}, "text10");
txt.watch("value", function (name, oldValue, value, PanelID) {
alert(PanelID);
},PanelID);
});
需要在watch功能中引入PanelID。我搜索了文档,但似乎我们无法将参数传递给Watch函数。 有没有办法覆盖Watch方法并让它接受参数?
答案 0 :(得分:1)
您可以将回调函数包装在closure中,以便它保留对PanelID
变量的本地引用。这假定PanelID
不是要在watch
函数的调用中更改的内容。
require(["dijit/form/NumberTextBox"], function (NumberTextBox) {
var txt = new NumberTextBox({}, "text10");
var PanelID = ... // comes from somewhere
(function (panelId) {
txt.watch("value", function (name, oldValue, value) {
alert(panelId);
});
})(PanelID);
});
watch
函数的回调函数会创建一个闭包,因此您可以将上述代码简化为:
require(["dijit/form/NumberTextBox"], function (NumberTextBox) {
var txt = new NumberTextBox({}, "text10");
var PanelID = ... // comes from somewhere
txt.watch("value", function (name, oldValue, value) {
alert(PanelID);
});
});