Ich habe Probleme, einen Zahlenwert mit AngularJS zu binden.
Ich habe ein vereinfachtes Beispiel für JSFiddle angegeben: Ссылка
%Vor%Dies sollten drei verschiedene Arten von Eingabefeldern sein. Wenn Sie eines aktualisieren, sollten alle Werte aktualisiert werden. Das funktioniert bis auf die Zahleneingabe. z.B. Wenn ich 20 in das erste Zahlenfeld eintippe, werden alle anderen Werte aktualisiert. Aber wenn ich die Text- oder Bereichseingaben aktualisiere, wird der Zahleneingang leer.
Ich habe mich gefragt, ob das Problem darin besteht, wie die Zahl zwischen Feldern dargestellt / konvertiert wird. z.B. die Zahleneingabe ist ein Fließkomma und die Texteingabe ist eine Zeichenkette?
Sie haben Recht, es hat mit String- und Zahlentypen zu tun. Ich habe eine $scope.watch
-Anweisung verwendet, um das Problem zu beheben: Ссылка
Ich habe Tims Antwort erweitert, um den Datentyp zu korrigieren, nachdem der Benutzer auch den Kontrollwert aktualisiert hat.
%Vor%Wenn Sie einen numerischen Wert im Modell speichern möchten, können Sie eine Direktive verwenden, die die von der Texteingabe und dem Eingabebereich in einem numerischen Wert erzeugte Zeichenfolge durch den Winkelparser konvertiert:
%Vor%Lassen Sie im HTML die Eingabe unverändert und fügen Sie die Direktive in den anderen Eingaben auf diese Weise hinzu:
%Vor%Der eckige Parser übersetzt die eingegebene Zeichenkette in einen numerischen Wert, bevor er im Modell gespeichert wird, so dass die numerische Eingabe automatisch funktioniert. Hier die komplette Geige .
Wenn der Benutzer außerdem Buchstaben oder andere seltsame Zeichen in die Texteingabe einfügt, werden diese nicht im Modell gespeichert, wodurch ein ungültiger Wert in der einzigen Quelle der Wahrheit Ihrer Anwendung verhindert wird. Nur '+' und '-' am Anfang des Textes werden korrekt analysiert, so dass auch negative Werte erlaubt sind. Ich hoffe das hilft! :)
TypeScript-Version inspiriert ainos984, der Nachwelt wegen
%Vor%Tags und Links javascript angularjs data-binding