Zeichne keine ungültigen Werte mit ng-model auf

Mir gefällt sehr, wie das Attribut ng-model direkt an mein Modell gebunden wird und Benutzer sofort eine Rückmeldung über ihre Änderungen erhalten. Für meinen Anwendungsfall ist das perfekt. Ich möchte jedoch nicht, dass ungültige Werte in das Modell eingefügt werden, damit 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 sich der Steuerwert ändern, während der Modellwert fest bleibt.

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

this.$setViewValue = function(value) {
...
  if (this.$modelValue !== value) {
    this.$modelValue = value;
    ...
  }
};

Dazu:

this.$setViewValue = function(value) {
...
  if (this.$modelValue !== value && this.$valid) {
    this.$modelValue = value;
    ...
  }
};

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.

Zum Beispiel betrachtenhttp://jsfiddle.net/FJvgK/1/ HTML:

<div ng-controller="MyCtrl">
    {{validNumber}}
    <form>
        <input 
            type="number"
            ng-model="validNumber"
            required
            min="10"
            max="20" 
        />
    </form>
</div>

Und der JS:

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.validNumber = 15;
}

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage