Bitte beachten Sie das folgende ViewModel-Snippet:
%Vor% Es scheint, dass mein Ajax-Aufruf über $.get
zu langsam ist oder dass ko.applyBindings()
zu schnell ist. So oder so, es scheint, dass Knockout nur richtig binden kann, wenn ich die Zeile alert('here');
auskommentiere.
Wenn ich es kommentiert belasse, wird keines der Steuerelemente aufgefüllt.
Irgendwelche Ideen, Leute?
Die einzige Arbeit, die ich mir vorstellen kann, ist .applyBindings
als Teil des Funktionsrückrufs in $.get
wie folgt zu tun:
Ihre Problemumgehung ist die richtige Vorgehensweise. Dies ist Ihr 'Erfolg'-Handler, der aufgerufen wird, wenn die Daten zurückgegeben werden, und das ist der richtige Punkt, um dann Ihr Ansichtsmodell zu füllen und die Bindungen anzuwenden.
Diese Problemumgehung funktioniert nur, wenn Sie nur einen Ajax-Aufruf auf der Seite haben. Ich denke, die richtige Lösung besteht darin, zuerst Ihr Ansichtsmodell zu erstellen, wobei id, given1 und given2 Observables (zunächst leer) sind. Und dann ändern Sie im Ajax-Callback den Wert dieser Observablen.
Eine weitere Möglichkeit besteht darin, Ihren Ajax-Aufruf innerhalb des Viewmodel-Objekts auszuführen und seine Eigenschaften zu füllen.
Tags und Links knockout.js jquery ajax