Кнопка возврата мобильного не работает - backbone.js 0.5.3 с jquerymobile 1.0 RC2 - PullRequest
2 голосов
/ 12 ноября 2011

При использовании метода навигации с triggerRoute = true; страница прекрасно переходит на новую страницу, но история не обновляется.

При нажатии кнопки «Назад» на устройстве Android (Nexus S) история выскакивает, но навигация не происходит.

Если я передам false для triggerRoute, а затем вызову Backbone.history.loadUrl();, тогда кнопка «Назад» работает, но довольно хаотично.

У метода навигации есть этот комментарий ....

// URL-encoding the fragment in advance. This does not trigger
// a `hashchange` event.

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

Фрагмент кода ...

er.getApp().getController().navigate('home', true);

ИЛИ

er.getApp().getController().navigate('home');
Backbone.history.loadUrl();

Известна ли проблема маршрутизации с комбинацией jquerymobile и магистрали. Старые ответы здесь относятся к более ранней версии backbone.js и больше не действительны ...

1 Ответ

1 голос
/ 12 ноября 2011

Хорошо.Нашел разрешение.По существу, jquerymobile ничего не следует делать с кнопкой «Назад» и событием «* 1002», и пусть магистраль полностью его обрабатывает.

В обработчике index.html, appLoading, было связывание кода Jquerymobile с кнопкой «Назад», удалил.

//removed this part
document.addEventListener("backbutton", function(){
              if (window.history.length > 0) {
                  window.history.back();
                  return false;
              }
              navigator.app.exitApp();
}, true);

// Since we are using the backbone router we want to disable
// auto link routing of jquery mobile.
// The code below for mobileinit
// notice the last two settings
   $(document).bind("mobileinit", function() {
  $.mobile.ajaxEnabled = false;
  $.mobile.hashListeningEnabled = false;
  $.mobile.pushStateEnabled = false;
  $.mobile.changePage.defaults.changeHash = false;
});
...