具有多个上下文的dojo函数

时间:2013-04-03 21:13:31

标签: javascript javascript-events dojo event-handling

我使用dojo创建了一个dojo/_base/declare类,其中包含onClickHandlerdijit/form/Button使用此处理程序来处理类中存储的数据。我需要处理程序能够引用触发事件的Button和处理程序所属的类的实例。

例如,下面是类中处理函数的第一部分:

drawToolClick : function(evt) {

    this.drawingtoolbar.deactivate(); // Here `this` should represent the instance of my class

    var parent = this.getParent(); // Here `this` should represent the button that was clicked

我知道我显然无法使用this来表示这两者,但当我将dojo/_base/lang hitch我的类实例用于该函数时,我不知道哪个按钮是单击(我有多个按钮使用相同的处理程序,因为它们代表enum)。如果我忽略了hitch this引用了被单击的按钮,但我不知道如何获取该处理程序所属的类的实例。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

所以,我终于弄明白了。我只是在我的模块中添加了一个变量var self;,其中类在declare语句之前定义。然后,在我的课程constructor功能中,我添加了self = this;

然后在我的onclick处理程序中,我使用this来引用单击的按钮,并使用self来引用类实例。

这似乎没问题。