Notieren Sie keine ungültigen Werte mit ng-model

8

Ich mag es wirklich, wie das ng-Modell-Attribut direkt an mein Modell bindet, und Benutzer erhalten sofort Rückmeldung über ihre Änderungen. Für meinen Anwendungsfall ist das perfekt. Ich möchte jedoch nicht, dass ungültige Werte in das Modell eingegeben werden, wo sie einen Schlüssel in die Berechnungen einbringen können. Ich möchte irgendwie, dass das Modell nur aktualisiert wird, wenn der Wert im Formularsteuerelement gültig ist. Bei ungültigen Werten kann der Steuerwert geändert werden, während der Modellwert unverändert bleibt.

Wenn ich die Quelle der angular (1.2rc) NgModelController $ setViewValue-Implementierung ändern:

%Vor%

Dazu:

%Vor%

Es scheint genau das zu tun, was ich will, aber ich weiß nicht, wie ich das richtig machen soll. Was ist der richtige Weg, um dieses Verhalten zu ändern? Oder sind meine Versuche aus irgendeinem Grund zum Scheitern verurteilt?

Update: Beispiel hinzugefügt.

Schauen Sie sich zum Beispiel Ссылка HTML an:

%Vor%

Und das JS:

%Vor%

Die Zahl wird korrekt für Werte zwischen 10 und 20 angezeigt, aber ich möchte, dass wenn Sie plötzlich "8" in das Feld eingeben oder die zweite Ziffer löschen, wobei "1" die letzte gültige Nummer immer noch oben angezeigt wird. Das heißt, das Modell hat immer einen gültigen Wert, auch wenn die Kontrolle nicht funktioniert.

    
traveling_matt 07.09.2013, 18:21
quelle

3 Antworten

7

Ich glaube, das Standardverhalten von AnugularJS-Validatoren besteht nicht darin, das Modell zu aktualisieren, wenn der übergebene Wert ungültig ist. Wenn Sie sich das Entwicklerhandbuch ansehen und durch Custom Validation gehen, zeigen diese Beispiele auch das Modell wird nicht aktualisiert oder wird für einen ungültigen Wert gelöscht, der auf der Benutzeroberfläche bereitgestellt wird

    
Chandermani 07.09.2013, 18:55
quelle
2

Wie Chandermani gesagt hat, ist dies das Standardverhalten, hier ein Beispiel, das es in Aktion zeigt:

%Vor%

{myvalue}} zeigt nichts an, bis Sie mindestens 4 Zeichen in die Eingabe geschrieben haben.

Beste Grüße.

BEARBEITEN

Wenn Sie einen Standardwert benötigen, können Sie Ihren Wert unter Verwendung eines berechneten Werts in zwei Werte unterteilen:

%Vor%

Ich habe hier ein Beispiel eingerichtet: Ссылка

    
Prezbar 07.09.2013 20:14
quelle
0

Dies ist das Standardverhalten, das Sie jedoch mithilfe der ngModelOptions-Direktive

ändern können %Vor%

Dokumentation: Ссылка Siehe Abschnitt "Modell-Updates und Validierung"

    
victorpacheco3107 27.09.2017 09:02
quelle