我正在使用Dojo 1.5,我正在尝试创建一个上下文菜单,可以调用函数 myFunction 传递事件和其他参数。到目前为止,我有以下代码:
<div dojoType="dijit.Menu" id="bankerMenu" style="display: none;">
<div dojoType="dijit.MenuItem" onclick="copyDocuments('bankerFolder');" iconClass="dijitEditorIcon dijitEditorIconCopy">Copy to Client</div>
<div dojoType="dijit.PopupMenuItem" onclick="doNothing()" iconClass="dijitEditorIcon dijitEditorIconCopy">
<span><s:text name="CopyTo.label"/></span>
<div dojoType="dijit.Menu" id="bigsubmenu">
var="distributionList">
<div dojoType="dijit.MenuItem" onclick="myFunction(event,'bankerFolder',1)"><s:property value='distributionListName'/></div>
</div>
</div>
</div>
但它没有识别我要传递给函数的'事件'。我知道我可以用这个来接听电话:
<div dojoType="dijit.MenuItem" label="Some menu item 2">
<script type="dojo/method" event="onClick" args="evt">
myFunction(evt,'bankerFolder',1);
</script>
</div>
但我想简化它并使用第一种语法。我怎么能这样做?
答案 0 :(得分:1)
从字面上传递event
可能最终会让您受到跨浏览器不一致的影响。但是,由于通过Dojo连接的事件会为您担心,并且由于onClick
是一个已经将事件对象作为参数接收的窗口小部件事件,因此您应该可以使用以下内容:
<div dojoType="dijit.MenuItem" onClick="myFunction(arguments[0],'bankerFolder',1)"><s:property value='distributionListName'/></div>
另请注意onClick
中的大写C - 小部件事件总是使用驼峰式案例;它们不是实际的DOM事件,尽管它们通常映射到类似的DOM事件。根据您描述的问题,我得到了您使用大写C进行测试的印象。
以下是该工作理念的简化示例(最初由Dustin Machi在Dojo IRC频道中提供/建议):http://jsfiddle.net/xwFC5/5/
答案 1 :(得分:0)
根据Ken对上述答案的评论,我设法在此处概述了这一点:http://blue-networks.net/wp/?p=37它连接到onCellContextMenu
并从事件中提取相关信息,将其保存到网格中对象