Слушатель кнопки Framewok7 не работает на нескольких вкладках - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь предотвратить закрытие моего приложения cordova для Android при нажатии физической кнопки «Назад» на моем мобильном телефоне (Android), вместо этого я хочу открыть диалоговое окно для двойного нажатия кнопки перед закрытием приложенияно я не могу понять, как правильно вызвать или прослушать кнопку возврата.

Вот мои вкладки, использующие framework7

<div class="toolbar tabbar-labels toolbar-bottom-md">
        <div class="toolbar-inner">
          <a href="#view-home" class="tab-link tab-link-active">
            <i class="icon f7-icons ios-only">home</i>
            <i class="icon f7-icons ios-only icon-ios-fill">home_fill</i>
            <i class="icon material-icons md-only">home</i>
            <span class="tabbar-label">Home</span>
          </a>
          <a href="#view-catalog" class="tab-link">
            <i class="icon f7-icons ios-only">list</i>
            <i class="icon f7-icons ios-only icon-ios-fill">list_fill</i>
            <i class="icon material-icons md-only">view_list</i>
            <span class="tabbar-label">catalog</span>
          </a>
          <a href="#view-settings" class="tab-link">
            <i class="icon f7-icons ios-only">settings</i>
            <i class="icon f7-icons ios-only icon-ios-fill">settings_fill</i>
            <i class="icon material-icons md-only">settings</i>
            <span class="tabbar-label">Settings</span>
          </a>
        </div>
      </div>

Замечание по инициализации Framework7, которое я уже объявил pushState

 var app  = new Framework7({
      root: '#app',  
      id: 'io.HomeApplication.Homeapp',  
      name: 'My Application',  
      theme: 'auto',  
      pushState :true,   

 //other methods,data here

Инициализация представлений

// Init/Create views
var homeView = app.views.create('#view-home', {
  url: '/',
  on: {
    pageInit: function (e, page) {
      // do something when page initialized
      document.addEventListener("backbutton", onBackKeyDown, false);
    } 
  }
});

 var catalogView = app.views.create('#view-catalog', {
    url: '/devices/'
  });

var settingsView = app.views.create('#view-settings', {
  url: '/settings/'
});

Сначала я вызывал onBackKeyDown как функцию.

function onBackKeyDown(){

}

Но теперь я поместил его на свойapp метод.

// App root methods
  methods: {

    onBackKeyDown: function(){

      app.dialog.alert('this was called');

    },

Но, тем не менее, когда я нажимаю кнопку на моем мобильном телефоне, он не выполняет никаких предложений, было бы здорово.

1 Ответ

0 голосов
/ 05 июня 2018

Ваш слушатель onBackKeyDown находится внутри view-home представления.Вынимает из этого и размещает его на том же уровне, что и остальной код:

 var app  = new Framework7({.....});
 document.addEventListener("backbutton", onBackKeyDown, false);

Должно быть, это делает ваш слушатель для всех приложений.

...