如何在网格的上下文菜单项处理程序中传递事件和其他参数?

时间:2011-01-17 18:35:53

标签: events dojo contextmenu handler

我正在使用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> 

但我想简化它并使用第一种语法。我怎么能这样做?

2 个答案:

答案 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并从事件中提取相关信息,将其保存到网格中对象