Магистраль — хэш URL-адреса становится пустым при изменении ориентации

Я разрабатываю мобильное приложение Phonegap, используя jQuery Mobile, Backbone и RequireJS. Я настроил jQM, чтобы позволить Backbone управлять маршрутизацией.

Всякий раз, когда я меняю ориентацию устройства, кажется, что весь макет отображается снова (примерно в первую секунду я вижу только обычный текст без визуальных улучшений jQM и пейджинга, и это происходит, когда приложение начинает выполняться как ну) и он переходит на первую страницу, хотя отображалась другая. Кто-нибудь сталкивался с такой же проблемой?

РЕДАКТИРОВАТЬ:

Макет не улучшался с помощью jQM, потому что он загружался асинхронно с помощью RequireJS до того, как было загружено тело, но почему это происходит при изменении ориентации? jQM уже загружен в DOM, я неправильно понимаю рабочий процесс RequireJS? Есть ли способ загрузить некоторые библиотеки с помощью RequireJS до загрузки тела? Если нет, я в конечном итоге буду загружать jQuery, jQM и файл конфигурации jQM синхронно.

А что касается маршрутизации, я еще ничего не выяснил, предположим, что это как-то связано с тем, что маршрутизатор Backbone не может правильно обрабатывать хэш URL.

РЕДАКТИРОВАТЬ 2:

Каким-то образом всякий раз, когда я поворачиваю устройство, хэш URL-адреса становится пустым. Таким образом, приложение переходит на первую страницу. Найдите ниже содержимое конфигурационного файла jQM:

define(['jquery'], function ($) {
  $(document).on("mobileinit", function () {
    $.mobile.ajaxEnabled = false;
    $.mobile.linkBindingEnabled = false;
    $.mobile.hashListeningEnabled = false;
    $.mobile.pushStateEnabled = false;

    $.mobile.defaultDialogTransition = "none";
    $.mobile.defaultPageTransition = "slidedown";
  });
});

person davids    schedule 11.11.2012    source источник
comment
при использовании JQM и require у вас будет независимый запуск JQM mobileinit и require docReady. проблема в том, что JQM всегда будет срабатывать в ближайшее время (по крайней мере, в моих приложениях), поэтому я обычно использую файл overrides.js, в котором я устанавливаю для $.mobile.autoInitializePage значение false, поэтому я могу запускать JQM вручную когда я хочу. Таким образом, вы можете предотвратить нерасширенную разметку в целом (за исключением короткого мигания...)   -  person frequent    schedule 13.11.2012
comment
backbone, я не использую, но я предполагаю, что какая-то функция срабатывает при изменении ориентации. похоже, что вся ваша страница перезагружается, что я обычно получаю, когда где-то возникает ошибка. однако трудно отследить, потому что перезагрузка также очистит консоль.   -  person frequent    schedule 13.11.2012
comment
На самом деле, если я загружаю jQM синхронно перед телом, все идет гладко и никакого мерцания нет, даже при запуске. Что касается Backbone, я проверил, что хеш URL-адреса меняется, когда я поворачиваю устройство, нужно больше исследовать.   -  person davids    schedule 13.11.2012
comment
Ok. JQM и Jquery не должны изменять хэш при изменении ориентации. Тогда должен быть костяк.   -  person frequent    schedule 13.11.2012