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

Reinitialize (or Re-declare) Dojo widget

本文关键字:Dojo 小部 新声明 初始化 声明      更新时间:2023-09-26

我有一段代码,它以以下方式初始化调整大小处理程序:

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
});

这是在一个核心应用程序文件中写的,我无法编辑。我需要重新绑定这个调整大小的处理程序来响应触摸事件。我想覆盖这个小部件,并用"触摸"事件重新绑定调整大小处理程序。差不多吧,

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

我以前从未在Dojo上工作过。所以,我不确定模块系统是如何工作的。我尝试通过更改标识小部件的字符串来创建一个新的小部件("dojox.layout.ResizeHandle"),但没有成功。

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

此代码不会初始化小部件。declare函数创建一个类。在这种情况下,它创建了一个名为"dojox.layout.ResizeHandle"的类。要使用这个类,你需要它,然后实例化它

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

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

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

同样值得指出的是,您使用的是旧的不推荐使用的dojo语法(connect vs on等),尽管您可能使用的是老版本的dojo。