Knockout.js Erweiterung der Wertbindung mit Interceptor

8

Dies scheint ein gängiger Ansatz für das Bereinigen / Validieren / Formatieren von Daten mit Knockout zu sein, wenn an ein Eingabefeld gebunden wird, es erstellt eine wiederverwendbare benutzerdefinierte Bindung, die eine berechnete Observable verwendet. Es erweitert im Grunde die Standardwertbindung, um einen Interzeptor einzuschließen, der Eingaben vor dem Schreiben / Lesen formatiert / bereinigt / validiert.

%Vor%

jsFiddle Beispiel: Ссылка

Vermisse ich etwas? Ich habe diese Methode überall gesehen, aber es scheint nicht vollständig zu funktionieren. Die Lesefunktion scheint völlig nutzlos, da sie überhaupt nicht verwendet wird. In der Schreibfunktion ändert die Eingabe von "23.0000" den geschriebenen Wert in 23, aber die Textboxwerte werden nicht aktualisiert.

    
wired_in 28.09.2012, 16:02
quelle

1 Antwort

13

Das Problem kommt vom update -Teil Ihrer benutzerdefinierten Bindung. Dieser Teil aktualisiert das Feld basierend auf dem ursprünglichen Modellwert. Der Event-Handler, der in init angehängt ist, sendet den neuen Wert über Ihre Schreibberechnung, aber die Aktualisierung des Feldes geschieht tatsächlich in update .

Eine Option besteht darin, die Wertbindung von Ihrer init -Funktion anzuwenden und die update -Funktion wie:

zu überspringen %Vor%

Aktualisierte Geige: Ссылка

    
RP Niemeyer 28.09.2012, 20:55
quelle