如何在 post create dojo AMD 模块中调用按钮单击事件
Posted
技术标签:
【中文标题】如何在 post create dojo AMD 模块中调用按钮单击事件【英文标题】:how to call the button click event in post create dojo AMD module 【发布时间】:2013-09-02 09:51:37 【问题描述】:我在 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;
);
【问题讨论】:
你找到解决办法了吗? 【参考方案1】:您需要连接范围,this
才能工作。
markbutton.on("click", lang.hitch(this, function (evt)
this._div.toggle();
));
【讨论】:
【参考方案2】:好吧,你可以将作用域存储在一个变量中,然后在你的函数中访问这个变量......
试试这个:-
var _this = this;
markbutton.on("click", function (evt)
_this._div.toggle();
);
在这种方法中,不需要“dojo/_base/lang”...
希望这会对你有所帮助..
【讨论】:
以上是关于如何在 post create dojo AMD 模块中调用按钮单击事件的主要内容,如果未能解决你的问题,请参考以下文章