【发布时间】:2013-04-03 21:13:31
【问题描述】:
我有一个使用dojo/_base/declare 创建的dojo 类,其中包括一个onClickHandler。 dijit/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 引用了被点击的按钮,但我不知道如何获取处理程序所属的类的实例。
有没有更好的方法来做到这一点?
【问题讨论】:
-
上课的目的是什么?如果它是一个 UI 类,那么你可以 subclass
Button代替吗?如果它是 model 数据,那么您确定应该将点击处理程序附加到它,因为点击处理程序是 UI。 -
这个类基本上是我最初以非AMD风格编写的所有函数和变量,我通过将其包装成一个类将其转换为AMD。我不会说它遵循任何旨在将 UI 与数据与功能(即 MVC)分离的特定模式。我的应用程序是一个网络地图应用程序,所以这个类代表了使用我正在使用的地图 API 所需的所有代码。这就是我在这个类中放置
onclick处理程序的原因,因为处理程序中的代码操作地图。
标签: javascript event-handling dojo dom-events