2013-07-04 3 views
0

Im пытается запустить событие click на панели инструментов Dojo 1.8.1.Dojo emit click event to dojox.mobile.ToolBarButton

<div data-dojo-type="dojox.mobile.ToolBarButton" class="backButton" moveTo="cartView" transition="slide"> 

Я попытался

function backClick(){ 
var backButton = dojo.query(".backButton", dojo.byId(currentView.id))[0]; 
writeLog("backClick::"+backButton); 
if(backButton){ 
    var backDijit = dijit.registry.byId(backButton.id); 
    writeLog("backDijit::" + backDijit.id); 
    writeLog("emit Click"); 
    backDijit.emit("click", {bubbles:true}); 
    writeLog("emit mousedown"); 
    backDijit.emit("mousedown",{bubbles:true}); 
    writeLog("emit mouseup"); 
    backDijit.emit("mouseup",{bubbles:true}); 
    writeLog("touchstart"); 
    backDijit.emit("touchstart"); 
    writeLog("touchEnd"); 
    backDijit.emit("touchend"); 


}else{ 
    //Exit App notification 
    navigator.app.exitApp(); 
} 

} 

MouseDown/MouseUp комбо работает в браузере. Но на устройстве это не работает (Android). Какое событие я должен отправить, чтобы нажать кнопку на устройстве?

ответ

0

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

Я полагаю, что ваш пример не работает, потому что синтетические события касания, которые вы излучаете, не содержат никаких данных, что не позволяет использовать различные методы, которые его обрабатывают.

Другим способом вызова обработчика щелчка на панели инструментов будет вызов его метода _onClick.

+0

Невозможно называть _onClick виджета кнопки, я предполагаю, что после прослушивания действия в фоновом режиме (флаг moveTo) с помощью прослушивателя dojo.on, _onClick ничего не делает. – tik27

+0

Если ваша основная цель состоит в том, чтобы выполнить кнопку перехода, определенную для вас, вы также можете сделать это, выполнив метод executeTransition представления (вместо того, чтобы возвращать кнопку «Назад» для эмуляции щелчка по ней, получить представление и выполнить его executeTransition метод). Что вы хотите сделать точно? –

+0

Если приложение имеет 4 вида вниз, просто было легко запустить подкладку, так как у нее уже есть имя предыдущего вида, написанного на нем. Единственный вариант, который я вижу, - это то, что эта работа не будет заключаться в том, чтобы создать массив прошлых имен представлений, чтобы вручную отменить действие приложения. Доджо.история выглядела интересной, но не уверен, что она будет обрабатывать переходы просмотра. – tik27