Angular Data Binding - Eingabetyp="Zahl"

8

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?

    
Bruce 16.10.2013, 13:35
quelle

5 Antworten

11

Sie haben Recht, es hat mit String- und Zahlentypen zu tun. Ich habe eine $scope.watch -Anweisung verwendet, um das Problem zu beheben: Ссылка

    
m.e.conroy 16.10.2013, 13:49
quelle
5

Sie können das auch mit einer Direktive beheben. Ich habe eine Direktive erstellt, um Eingaben, die an numerische Felder gebunden sind, numerisch zu erzwingen.

Html:

%Vor%

Sie können es Ihrem numerischen Feld wie folgt hinzufügen:

%Vor%

vollständiges Beispiel: Ссылка

    
Tim 12.12.2013 09:15
quelle
5

Ich habe Tims Antwort erweitert, um den Datentyp zu korrigieren, nachdem der Benutzer auch den Kontrollwert aktualisiert hat.

%Vor%     
AJ Richardson 26.12.2014 08:03
quelle
4

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! :)

    
ainos984 05.02.2015 18:43
quelle
1

TypeScript-Version inspiriert ainos984, der Nachwelt wegen

%Vor%     
Souhaieb Besbes 25.03.2016 09:29
quelle