Auffüllen listview mit jQuery-Mobile eine multi-Seite Vorlage
Ich versuche zu Rendern einer listview auf einer zweiten Seite mit Hilfe von jquery.mobile.
Ich bin mit einem einzigen HTML mit mehreren "Seiten".
<div data-role="page" id="foo">
<a href="#bar" data-role="button" data-inline="true" id="loadList)">List</a>
</div>
<div data-role="page" id="bar">
<div id="ListDiv">
<ul id="listview" data-role="listview" data-inset="true">
</ul>
</div>
</div>
<!--application UI goes here-->
<script type="text/javascript">
$("#loadList").click(function(){
$.getJSON(
"http://localhost/index.php/api/list",{format: "json"},
function(data){
var output = '';
$.each(data, function(key, val) {
output += '<li><a href="#">' + val +'</a></li>';
});
$('#listview').append(output).listview('refresh');
});
});
Aber das problem ist jetzt wenn ich auf die #loadList-Taste, dauert es mir auf der #bar-Seite, aber es scheint nicht $("#loadList").klicken Sie auf() wird ausgeführt, weil die Liste nicht zeigen, bis auf der #bar-Seite. Nämlich, wird nichts angehängt #listView.
Irgendwelche Gedanken?
InformationsquelleAutor Maxim Mai | 2013-02-24
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, es gibt ein problem in diesem code
$.getJSON
laden Logik ist falsch. Ändern Seite kann nicht verwendet werden, die in einem gleichen Zeit mit$.getJSON
.Gibt es 2 Möglichkeiten, wie Sie diese Arbeit machen:
Entfernen onclick-event und laden Sie Ihre Daten bei der zweiten Seite Initialisierung:
Leider gibt es ein problem mit dieser Lösung. Verwendet Seite Ereignis nicht warten, für
$.getJSON
, so dass in einigen Fällen Ihre listview leer, wenn die Seite lädt, und der Inhalt wird plötzlich erscheinen. Also diese Lösung ist nicht so toll.Zweite Lösung ist, entfernen Sie
href="#bar"
Attribut aus der Taste, aber lassen Sie ein click-Ereignis. Wenn$.getJSON
Aktion erfolgreich ist der EinsatzchangePage
Funktion und das laden der nächsten Seite. In Fall gibt es ein problem mit den Zugriff auf der zweiten Seite listview speichern Sie Ihr Ergebnis (In diesem ARTIKEL Sie finden, wie, oder HIER) und hängen Sie es wieder während einespagebeforeshow
Falle einer#ba
r Seite.Machte ich eine funktionierende
jsFiddle
Beispiel: http://jsfiddle.net/Gajotres/GnB3t/HTML :
JS :
Haben Sie id="loadList)", das heißt, mit einer schließenden Klammer in
Vielleicht ist dies die Ursache Ihres Problems?