2011-01-07 2 views
5

У меня есть ContentPane, созданный как декларативный, так и программный.using onShow и onLoad для dijit.layout.ContentPane созданный программный

декларативные:

<div dojoType="dijit.layout.ContentPane" id="abccp" href="abc.php?id=1" title="abc" onShow="do_abc()"> 

Programmatic

var obj_abc; 
var abchref= "abc.php?id=1"; 
obj_abc = new dijit.layout.ContentPane({id:'abccp',title:'abc', href:abchref}); 

Как я могу позвонить do_abc() в программном экс

ответ

8

Чтобы быть технически эквивалентными вашим первым примером, вы бы просто включить onShow: do_abc в объекте arguments, переданном конструктору ContentPane. (Обратите внимание на круглые скобки после do_abc - нас интересует сам объект функции, а не результат его вызова!)

Однако, если вы хотите сделать это немного более растяжимым в моде, тогда я «d предлагаю делать это так:

obj_abc = new dijit.layout.ContentPane(...); 
obj_abc.connect(obj_abc, 'onShow', do_abc); 

что это делает выполнить Подвод таким образом, что всякий раз, когда obj_abc» onShow метод s называется функция do_abc в свою очередь, будет называться (хотя в контексте obj_abc, который предположительно это то, что вы хотите в любом случае). Вы также получаете следующие дополнительные бонусы:

  • Он больше не задавливает никакой функциональности по умолчанию, которые могут быть изначально присутствует в методе (хотя в этом случае onShow заглушки предназначены для колошматить-состоянии)
  • Вы может подключать любое количество функций к onShow таким образом
  • Соединение будет автоматически снесено, когда виджет будет уничтожен (в отличие от dojo.connect, который вам придется снести вручную).

Для получения дополнительной информации:

+0

Большое спасибо, это сработало! – noru

+0

Привет, Кен У меня проблемы с некоторыми додзё, вы можете проверить: http://stackoverflow.com/questions/18122473/dojo-is-not-working – GingerHead

Смежные вопросы