button - dojo.connect不会通过按钮连接 'onclick'

标签 button dojo onclick connect

我在使用dojo.connect()将“onclick”事件与此按钮连接时遇到问题:

<button dojoType="dijit.form.Button" widgetId="inbox_button" id="inbox_button">Inbox</button>

进行连接的代码是:
var inbox_button=dojo.byId("inbox_button");
dojo.connect(inbox_button,'onclick',function(){
    var container=dijit.byId("center");
    container.addChild(new dijit.layout.ContentPane({region: "left", content: "...", style: "width: 100px;"}))
});

但是,ANY onclick事件不会触发单击该按钮的功能,而是触发了该功能,最终我得到了很多子容器。

即使我确定.connect()函数应该作为dojo基本功能的一部分可用,但我还是明确地“要求”它:
dojo.require("dojo._base.connect");

关于为什么会发生这种情况的任何想法?

最佳答案

如您所说,如果在DOM准备就绪之前运行该代码,则dojo.byId(“inbox_button”)将返回null。因此,您的连接实际上正在执行:

dojo.connect(null, "onclick", function() { ... })

..如果dojo.connect的第一个arg为null,则将使用global或“window”对象。

但是,这只是这里的一个错误。您的button元素已进行窗口小部件化,并变成了dijit.form.Button。因此,您应该在此处连接到小部件的onClick方法,而不是节点的onclick:
dojo.connect(dijit.byId("inbox_button"), "onClick", function() { ... });

另外,要明确一点,您永远不需要dojo.require在dojo._base中需要执行任何操作,这就是dojo.js对您的 promise -全部捆绑在其中。

关于button - dojo.connect不会通过按钮连接 'onclick',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3008406/

相关文章:

Android 按钮图像变得模糊?

java - Worklight/Dojo 中的 Xtify 集成

android - 如何在 onClick 中重置 postDelayed runnable 的时间?

android - 给予 onTouch 优先于 onClick

ios - 如何在 iOS 的 didselectrowatindexpath 中触发按钮操作方法, objective-c

java setOpaque(false) 使悬停速度变慢

javascript - dojo xhrPost 进度(回调)事件监听器?

javascript - 每次点击时调用函数(HTML 包括框架)

Python:单击时更改 matplotlib 按钮的标签

javascript - Dojo:使用 lang.hitch 时无法到达错误回调