jQuery Mobile и передача переменных в ссылках через строку запроса — но строка запроса не обновляется

#jquery-mobile #query-string

#jquery-mobile #строка запроса

Вопрос:

Я создаю приложение PhoneGap с помощью jQuery Mobile, и у меня есть две страницы: одна с динамическим списком страниц, а другая с формой для редактирования или создания страницы. Они находятся в одном HTML-файле.

Нажатие на элемент списка передает ?действие = редактировать и нажатие кнопки «Добавить», которая у меня есть, передает ?действие = добавить строки запроса.

Вот jsfiddle для визуализации страниц

ПРИМЕЧАНИЕ: пример действует не совсем так, как живой код.

Я запускаю свое приложение на телефоне Android, и если я выполняю эти действия, в окне предупреждения отображается правильный запрос: —

  1. Нажмите кнопку добавить на странице списка
  2. Нажмите назад на страницу формы
  3. Щелкните ссылку изменить элемент списка на странице списка

Однако, если я сделаю это по-другому (сначала нажмите «Редактировать», затем кнопку «Добавить»), нажатие кнопки «Добавить» никогда не отобразит строку запроса add в окне предупреждения (пример jsfiddle всегда блокирует строку запроса первой нажатой ссылки, что еще хуже, чем живой код!)

Ответ №1:

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

Сделайте ссылки для редактирования такими

  <a href="javascript:editPage(15)">Page 15</a>
 

Затем создайте сценарий примерно так:

 var editingId = 0

function editPage(id){
    editingId = id;
    $.mobile.changePage("#editingPage");
});

$("div#editingPage").live("pageshow", function(){
    loadDataForPage(editingId);
});