2016-04-21 7 views
0

У меня есть googled, но все полезные статьи описывают, как обращаться с обратной кнопкой в ​​NavigationView, но я просто использую общее представление, как показано ниже.Как обращаться с кнопкой «Назад» в приложении «Сенча» без навигации?

Ext.define('emall.view.MyPage', { 
    extend: 'Ext.Container', 
    alias: 'widget.mypage', 

    requires: [ 
     'emall.view.topplus', 
     'Ext.TitleBar', 
     'Ext.Button', 
     'Ext.Toolbar' 
    ], 

Я делаю изменения в существующем приложении, поэтому я не могу изменить базовую архитектуру. Так что мне интересно, как обращаться с кнопкой «Назад»?

Я знаю, что ниже способ может захватить обратно событие кнопки. (Я добавил ниже метод app.js)

if (Ext.os.is('Android')) { 
    document.addEventListener("backbutton", Ext.bind(onBackKeyDown, this), false); 

    function onBackKeyDown(eve) { 

     eve.preventDefault(); 
     //do something 
     alert('back button pressed'); 
     history.back(); 

    } 
} 

Но что я могу сделать в методе onBackKeyDown? Поскольку это событие будет запущено, когда я нажму кнопку «Назад», независимо от того, на какой странице я остаюсь. Поэтому я не могу перейти на предыдущую страницу, например Ext.Viewport.animateActiveItem ('xxxx'), так как я не знаю текущую страницу, которую я оставил.

Если я могу получить имя текущей страницы, я могу обработать ее, как показано ниже.

if(currentpage=='xxx') 
      Ext.Viewport.animateActiveItem('profile', { 
       type : 'slide', 
       direction:'left' 
      }); 
+0

Вместо этого подхода, вы рассматривали использование маршрутов? Если у каждого вашего компонента есть другой маршрут, браузер автоматически позаботится о кнопке «Назад». – JChap

+0

Должно быть довольно легко переключиться на navigationview (навигационное представление - обычный контейнер с макетом карты и некоторыми методами для просмотра поп/push), как только у вас есть navview, вы можете вызвать метод pop, и все готово. –

+0

Вы можете использовать событие deactivate для записи xtype представления в глобальный var. Оттуда вы можете animateActiveItem – Dinkheller

ответ

0

Используйте этот код:

document.addEventListener("deviceready", onDeviceReady, false); 
function onDeviceReady() {if (navigator.userAgent.match("Android")) 
{  document.addEventListener("backbutton", onBackKeyDown, true); } 

} 

function onBackKeyDown(e) { 
    if (window.location.hash === "#splashviewRoute") {  
     navigator.app.exitApp(); 
    } 
    else { 
     window.history.back(); 
    } 
}