Панель содержимого Dojo | программный щелчок

#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. Я понимаю это. Я должен признаться, что это действительно сбивает с толку, хе-хе.