重新初始化(或重新声明)Dojo小部件

时间:2013-11-25 07:45:44

标签: javascript dojo

我有一段代码以下列方式初始化resize处理程序:

dojo._hasResource["dojox.layout.ResizeHandle"] = true;
dojo.provide("dojox.layout.ResizeHandle");
dojo.experimental("dojox.layout.ResizeHandle");
dojo.declare("dojox.layout.ResizeHandle", [dijit._Widget, dijit._Templated], {
   _init: function(){},
   create: function(){
      this.connect(this.resizeHandle, "mouseover", "_init");
   }
   // ... more properties
});

这是用我无法编辑的核心应用文件编写的。我需要重新绑定此调整大小处理程序以响应触摸事件。我想要覆盖这个小部件并用“触摸”事件重新绑定resize处理程序。像这样的东西,

this.connect(this.resizeHandle, "touchstart", "_init");

我之前从未参与过Dojo的工作。所以,我不确定模块系统是如何工作的。我尝试通过更改标识窗口小部件的字符串(“dojox.layout.ResizeHandle”)来创建新窗口小部件,但没有运气。

如何销毁现有小部件并使用触摸事件重新绑定?

1 个答案:

答案 0 :(得分:1)

此代码不初始化窗口小部件。 declare函数创建一个类。在这种情况下,它会创建一个名为“dojox.layout.ResizeHandle”的类。要使用此类,您需要它,然后实例化它。像这样的东西

require(["dojox/layout/ResizeHandle"], function(ResizeHandle) {
    var resize = new ResizeHandle();
} 

从那里你可以附加新的处理程序。

on(resize.resizeHandle, "touchstart", "_init);

同样值得指出的是,您使用旧的已弃用的dojo语法(connect vs on等),尽管您可能正在使用旧版本的dojo。