我在dojo AMD模块中创建了新的dojo应用程序。我需要将我的按钮单击一个脚本文件调用到另一个脚本文件。但当我按下按钮时,它显示空值错误,我的示例代码如下:
我的功能文件代码是:
define(["dojo/_base/declare" . . .], // defaultDuration
function (declare . . ) {
var mycode = declare([ContentPane, _WidgetBase, _TemplatedMixin], {
toggle: function () {
//here my function
},
constructor: function (params /) {
},
postCreate: function () {
}
});
return mycode;
});
按钮单击事件:
define(["dojo/_base/declare" . . . ],
function (declare . . .) {
var evet = declare([dijit._WidgetBase, dijit._TemplatedMixin], {
_div: null,
constructor: function (div) {
this._div = div;
},
postCreate: function () {
this.inherited(arguments);
var markbutton = new Button({
label: "Mark",
}, this.markButtonNode);
markbutton.on("click", function (evt) {
this._div.toggle(); // error here _div is undefined.
});
}
});
return evet;
});
答案 0 :(得分:1)
您需要暂停范围才能使this
正常工作。
markbutton.on("click", lang.hitch(this, function (evt) {
this._div.toggle();
}));
答案 1 :(得分:0)
好吧,您可以将范围存储在变量中,并在函数内部访问此变量....
试试这个: -
var _this = this;
markbutton.on("click", function (evt) {
_this._div.toggle();
});
在这种方法中,不需要“dojo / _base / lang”......
希望这会对你有帮助..