2013-08-04 3 views
0

В дополнение к кнопке «Назад», как и ожидалось, мне нужно асинхронно вызывать функцию для обновления некоторых таблиц db и обновления пользовательского интерфейса.Как подключить событие к dojox.mobile.heading 'back' button

До принятия этой должности, я сделал некоторые исследования и попытался следующим на этом ...

<h1 data-dojo-type="dojox.mobile.Heading" id="hdgSettings" data-dojo-props="label:'Settings',back:'Done',moveTo:'svStart',fixed:'top'"></h1> 

dojo.connect(dijit.registry.byId("hdgSettings"), "onclick", 
    function() { 
     if (gblLoggerOn) WL.Logger.debug(">> hdgSettings(onclick) fired..."); 
     loadTopLvlStats(); 
}); 

Поскольку мой заголовок не имеет какие-либо другие виджеты, чем кнопки «назад», я подумал, что прикрепление этого события к нему решит мою проблему ... он ничего не сделал. Так что я изменил его на это ...

dojo.connect(dijit.registry.byId("hdgSettings")._body, "onclick", 
    function() { 
     if (gblLoggerOn) WL.Logger.debug(">> hdgSettings(onclick) fired..."); 
     loadTopLvlStats(); 
}); 

Как оказалось, «._body» атрибут должен быть разделяют аккордеон виджет, который я только что случиться, чтобы использовать в качестве основного компонента пользовательского интерфейса моего приложения, и любой попытка чтобы взаимодействовать с Аккордеоном, оказало мое приложение бесполезным.

В крайнем случае, я думаю, я мог бы просто отказаться от использования встроенной кнопки «назад» и просто разместить свой собственный tabBarButton в заголовке, чтобы контролировать переход моего приложения и обработку событий.

Если сообщество предполагает, что я использую свой собственный tabBarButton, то так оно и есть, однако должен быть способ чисто привязать событие к встроенной поддержке кнопки «назад».

Мысли?

ответ

1

Следующая следует сделать трюк:

var backButton = dijit.registry.byId("hdgSettings").backButton; 
if (backButton) { 
    dojo.connect(backButton, "onClick", function() { ... }); 
} 

Примечания:

  • Код выше должен быть выполнен с помощью додзё/готового вызова, чтобы избежать использования реестра виджета Dijit, прежде чем она заполняется. См. http://dojotoolkit.org/reference-guide/1.9/dojo/ready.html.
  • Обратите внимание на капитализацию имени события: «onClick» (не «onclick»).
  • Не зная, какую версию Dojo вы используете (пожалуйста, всегда указывайте информацию о версии Dojo при задании вопросов), я сохранил ваш синтаксис перед AMD, который не рекомендуется с недавними версиями Dojo (1.8, 1.9). См. http://dojotoolkit.org/documentation/tutorials/1.9/modern_dojo/.
+0

Спасибо, Адриан, он безупречно работает в доджо 1.9, и очень скоро проверит его в доджо 1.8, так как моему проекту, возможно, придется вернуться к 1.8 из-за других проблем, не связанных с этим вопросом. – trbo