Ich schreibe eine App, die eine Art "Leistungsmesser" ist, in der ich eine Liste von "Orten" in der Navigation anzeige, denen eine Leistungsbewertung zugeordnet ist, und eine Anzeige, die diese Informationen zusammenfasst. Standorte können verschachtelt werden. Wenn ich auf einen Ort klicke, ändert sich der "Zustand" meiner Anwendung und die untergeordneten Orte werden in die Navigation geladen. Ein Klick zurück bringt den Benutzer zur vorherigen Standortliste.
Derzeit frage ich nach neuen Leistungsbewertungen ab (ich werde mich später mit einer besseren Lösung befassen, aber dies ist nur ein Proof of Concept), dann regeneriere ich meine Navigationsansicht mit einer Vorlage und etwas ähnlichem wie $(nav).html(someHtml)
Ich verwende die Ereignisdelegation, damit ich die Ereignisse an meinen Standorten bei einer Zustandsänderung nicht neu binden muss.
Derzeit überschreibe ich die Ansicht also jedes Mal, wenn ich einen neuen Datensatz erhalte. Ich bin nicht sicher, ob es Leistung Verzweigungen zu diesem, aber es gibt sicherlich funktionale Verzweigungen. Zum Beispiel übersteigt die Liste der Orte manchmal meinen Navigationsbereich, so dass ich scrollen muss ( overflow:auto
). Wenn ich die Ansicht jedoch aktualisieren, setzt es die scrollTop dieses div, die es unbrauchbar für jemanden, der durch eine lange Liste von Standorten blättern macht. (wie Polling ist auf einem 2-Sekunden-Intervall zum Beispiel)
Ich bin also auf der Suche nach einer Lösung, die es mir ermöglicht, meine JSON-Daten tatsächlich an die Dom-Elemente für jeden Standort zu binden. Dann, wenn ich abrufen, kann ich $.extend meine vorhandenen Daten und haben es automatisch die Werte in meiner Ansicht aktualisieren. Ist dies möglich? Ich habe gerade die jquery-datalink
Plugin, aber es scheint das nur für Formulare zu erreichen, ich habe keine Formulare auf dieser App.
Ich habe nie wirklich jQuery's Daten-Methode verwendet, ich weiß nicht einmal, wenn dies ist, was ich brauche, aber im Grunde möchte ich so etwas wie dieses:
- Wenn ein Ort angeklickt wird, lösen Sie eine Zustandsänderung aus, die die neuen Daten lädt und meine Abfrage-URL festlegt.
- Beim ersten Laden der Daten wird die Ansicht (der neuen Standorte) erstellt.
- Nachfolgende Datenladungen (durch Polling) aktualisieren einfach die Dom-Elemente mit den entsprechenden Daten, anstatt die HTML-Datei neu zu erstellen.
Ich bin ganz Ohr, was mögliche Lösungen angeht. Pseudocode und Proof of Concepts sind gerne willkommen, da ich durchaus in der Lage bin, eine theoretische Lösung zu implementieren.
edit Bonuspunkte für die Integration mit einer Templating-Lösung Ihrer Wahl (jQuery.tmpl, oder Mustache etc...)