Как передать событие и другие аргументы в обработчик пункта контекстного меню сетки? - PullRequest
0 голосов
/ 17 января 2011

Я использую 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 ]

1 голос
/ 18 января 2011

Передача event в буквальном смысле может привести к тому, что вы столкнетесь с противоречиями между браузерами.Однако, поскольку события, связанные с помощью Dojo, беспокоятся об этом, и поскольку onClick является событием виджета, который уже получает объект события в качестве аргумента, вы можете использовать следующее:

<div dojoType="dijit.MenuItem" onClick="myFunction(arguments[0],'bankerFolder',1)"><s:property value='distributionListName'/></div>

Также обратите внимание на заглавную C в onClick - события виджета всегда используют регистр верблюда;они не являются действительными событиями DOM, хотя они часто отображаются на аналогичные события DOM.У меня сложилось впечатление, что вы тестировали с заглавной буквой C, основываясь на проблеме, с которой вы столкнулись.

Вот упрощенный пример работы идеи (изначально предоставленной / предложенной Дастином Мачи в IRC-канале Dojo): http://jsfiddle.net/xwFC5/5/

0 голосов
/ 02 мая 2011

Следуя комментариям Кена к ответу выше, мне удалось выяснить это, как показано здесь: http://blue -networks.net / wp /? P = 37 Он подключается к onCellContextMenu и тянет соответствующую информацию из события, сохраняя ее в сетке объекта.

...