4 Stimmen

Bewährte KnockoutJS-Praxis zum Auffüllen mehrerer Ansichtsmodelle mit Ajax

Ich habe mich gefragt, ob jemand irgendwelche Empfehlungen für das Auffüllen mehrerer Ansichtsmodelle auf einem Bildschirm hat. Ich habe:

a) ein Ansichtsmodell, das eine Liste von Aufgaben enthält

b) ein Ansichtsmodell, das eine Liste von Benutzern enthält

Ich fülle diese in den 2 x ajax Erfolg (separate ajax Aufrufe) etwas wie:

success: function (data) {
    masterVM.User = ko.mapping.fromJS(data, mapping);
    ko.applyBindings(masterVM); 
}

/* another ajax call: */
success: function (data) {
    masterVM.Task = ko.mapping.fromJS(data, mapping);
    ko.applyBindings(masterVM); 
}

Und derzeit Aufruf in jedem Ajax Erfolg Aufruf.

Ich hoffe, meine Frage ist klar und deutlich formuliert. Bitte fragen Sie bei Bedarf nach weiteren Einzelheiten.

Mit freundlichen Grüßen Phil

4voto

KodeKreachor Punkte 8762

Wir handhaben dies derzeit, indem wir alle Daten in einem einzigen Ajax-Aufruf an unsere Seite senden und dann eine ko.mapping um die Daten den Ansichtsmodellen in unserem Hauptansichtmodell zuzuordnen.

Wir haben zunächst zwei Aufrufe gemacht, aber dann beschlossen, dass es besser wäre, die Anzahl der http-Anfragen zu reduzieren, weshalb wir die Datensätze in einer einzigen hierarchischen Objektstruktur zusammengefasst haben, und das funktioniert hervorragend.

Diese Frage und die nachfolgende Antwort enthalten einen Ausschnitt des Ansatzes, den wir verfolgen: Zuordnung von JSON-Daten zu Knockout observableArray mit spezifischem View-Modell-Typ

3voto

John Papa Punkte 21074

Solange Sie kein Leistungsproblem bemerken, empfehle ich, getrennte Anrufe zu tätigen, denn so bleiben Ihre Dienste lose mit Ihren Präsentationsanforderungen verbunden.

Wenn es sich jedoch um ein Perf-Problem handelt, können Sie Ihren Webdienst die Daten aggregieren und in einem Zug zurückgeben lassen. Dadurch verlieren Sie jedoch ein wenig an Wartungsfreundlichkeit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X