2012-05-27 13 views
9

Próbuję znaleźć obejście dla odświeżających list zagnieżdżonych z wersją 1.1 jquery Mobile, która obecnie pozostawia pustą stronę.Rozwijane rozwiązanie odświeżania listy zagnieżdżonych jQuery

Wiem, że jednym z istniejących rozwiązań jest włączenie funkcji pushState, ale spowoduje to powrót do katalogu głównego i wkręty ze stanem historii w następnym widoku listy zagnieżdżonej.

Rozwiązanie, które znalazłem pod, nie jest ładne, ale działa na iOS i nowszym Androidzie.

$(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"); 

}); 

Zdaję sobie sprawę, że pushState i replaceState nie są obsługiwane przez wszystkie przeglądarki i że mogę spróbować użyć:

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

zamiast ale staje się znacznie choppier z doświadczenia użytkownika.

Mam nadzieję, że ktoś może rzucić trochę światła na to, co można zrobić lepiej lub jak można to zrobić lepiej/bardziej niezawodnie.

+0

Jeśli martwisz się niezawodnością, dlaczego nie używasz stabilnej wersji JQM? – codaniel

+0

Mój błąd. 1.1. Wyprzedzanie siebie :) – chris

+3

Czy możesz podać kod HTML, abyśmy mogli pracować nad znalezieniem możliwych obejść? –

Odpowiedz

1

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

lub

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

Chyba jestem całkowicie błędnie rozumiejąc swoje pytanie, powinieneś być w stanie skorzystać z jednej z powyższych linii, aby odświeżyć listę, którą dodajemy gdzie: <mySelector> jest dowolnym selektorem zgodnym z JQuery, który zwróci twój listview.

1

Ten kod pracował dla mnie:

$("#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"); 

Tutaj #newlist jest identyfikator ul danych jest obiektem.

Powiązane problemy