#javascript #dojo
#javascript #dojo
Вопрос:
Я создал Dojo ContentPanes
в виде меню. После подключения события click к определенному пункту меню оно откроется после щелчка ( on(registry.byId("lalalal"), function()...)
. Теперь я хочу иметь возможность запускать событие щелчка программно. Если я использую dijit/form/Button
, это не проблема, но когда я использую ContentPane
, кажется, что это не работает.
Я создал jsFiddle, чтобы показать проблему.
Кто-нибудь может мне помочь?
Комментарии:
1. Вы хотите запустить событие щелчка или вызвать функцию, прикрепленную к событию щелчка? Последнее намного проще. Смотрите: jsfiddle.net/c3xGL/1
2. Возможно, я не предоставил достаточно справочной информации. У меня уже было меню (
AccordionContainer
содержащееContentPanes
), и когда я нажимаю на пункт меню, он открывает новую вкладку в моемTabContainer
. На недавно открытой вкладке я использую сетку. Когда вы открываете contextmenu в сетке, должна быть возможность открыть другую вкладку. На самом деле все эти «вкладки» и действия работают, поэтому в моем коде я хотел программно вызвать «onclick» в menuitem, чтобы он открыл нужную вкладку.
Ответ №1:
Вы назвали свои модули действительно запутанно… но обработчик события onClick напрямую привязан к DOM-узлу за dijit/layout/ContentPane
виджетом.
Это означает, что если вы используете следующее:
on.emit(registry.byId("example").domNode, "click", {});
Это сработает.
Я также обновил вашу скрипку: http://jsfiddle.net/c3xGL/3
Комментарии:
1. Это был ответ, который я искал, большое спасибо. Вы имеете в виду, что ‘dom’ должен быть ‘registry’? Обычно я использую название ‘registry’, но в моем примере jsFiddle я сильно изменил код и забыл изменить его обратно перед публикацией на SO.
2. Да, я это имел в виду: p Сначала я был сбит с толку тем, что там происходило: p
3. Я понимаю это. Я должен признаться, что это действительно сбивает с толку, хе-хе.