applyBindings () ist zu schnell, wird aufgerufen, bevor die Ajax-Anforderung abgeschlossen ist

7

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:

%Vor%     
YS. 15.09.2011, 07:16
quelle

3 Antworten

15

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.

    
Mark Robinson 15.09.2011, 09:34
quelle
8

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.

    
Gnurfos 31.12.2011 12:58
quelle
0

Eine weitere Möglichkeit besteht darin, Ihren Ajax-Aufruf innerhalb des Viewmodel-Objekts auszuführen und seine Eigenschaften zu füllen.

    
Sergey Zwezdin 27.06.2012 09:53
quelle

Tags und Links