Решение для обновления вложенного списка jQuery Mobile

Я пытаюсь найти обходной путь для обновления вложенных списков с версией 1.1 jquery Mobile, которая в настоящее время оставляет вас с пустой страницей.

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

Решение, которое я придумал ниже, некрасиво, но работает на iOS и более новых версиях Android.

$(document).bind("mobileinit", function(){

 var urlEx = '#&ui-page=5-0';  //ending of nested list url

 if (window.location.href.indexOf(urlEx) != -1){

  history.replaceState("", "0", "index.php");
   setTimeout("window.location.href='https://FULLURL#/FULLURL&ui-page=5-0'",100);
 }

 window.history.pushState("", "0", "index.php"); 

});

Я понимаю, что pushState и replaceState поддерживаются не каждым браузером, и я мог бы попробовать использовать:

window.location.href = window.location.href.substring(0,window.location.href.indexOf('#'));

вместо этого, но он становится намного более изменчивым для пользователя.

Я надеюсь, что кто-то может пролить свет на то, что можно сделать лучше или как это можно сделать лучше/надежнее.


person chris    schedule 27.05.2012    source источник
comment
Если вас беспокоит надежность, почему вы не используете стабильную версию JQM?   -  person codaniel    schedule 28.05.2012
comment
Моя ошибка. Я упоминаю 1.1 Забегая вперед :)   -  person chris    schedule 28.05.2012
comment
Не могли бы вы предоставить HTML-код, чтобы мы могли найти возможные обходные пути?   -  person Apostolos Emmanouilidis    schedule 06.09.2012
comment
У меня есть ощущение, что вы делаете слишком много, и это можно исправить, не касаясь состояния, но я не уверен, правильно ли я понимаю вашу ситуацию. Лучше всего будет ссылка на (не)рабочий код. Или выложите где-нибудь зип   -  person naugtur    schedule 21.09.2012
comment
Что вы подразумеваете под обновлением вложенных списков? Вы имеете в виду, что загружаете вещи динамически, а затем вам нужно повторно отображать список? Не слишком ли сложно предварительно загрузить все?   -  person Parris    schedule 24.09.2012
comment
Если вы добавляете дочерние элементы в список, вы можете вызвать .refresh('listview') для объекта. См.: stackoverflow. ком/вопросы/7083507/   -  person Calavoow    schedule 28.09.2012


Ответы (2)


$("#<mySelector>").listview("refresh");

or

$("#<mySelector>").refresh("listview");

Если я полностью не понимаю ваш вопрос, вы должны иметь возможность использовать любую из приведенных выше строк, чтобы обновить список, который вы добавляете, где <mySelector> - это любой JQuery-совместимый селектор, который вернет ваш список.

person Colby R Meier    schedule 05.10.2012

Этот код работал для меня:

$("#newList").append("<li class='ui-li-desc'><div><b>"+data[i].Title+":</b></div><small><div class='ui- li-desc'>"+data[i].Content+"</div></small></li>");

$("#newList").listview("refresh");

Здесь #newlist — это идентификатор ul, а данные — это объект.

person AppMobiGurmeet    schedule 10.10.2012