Nie zapisuj nieprawidłowych wartości w modelu ng

Naprawdę lubię sposób, w jaki atrybut ng-model wiąże się bezpośrednio z moim modelem, a użytkownicy otrzymują natychmiastową informację zwrotną o swoich zmianach. Dla mojego przypadku użycia, który jest idealny. Nie chcę jednak umieszczać nieprawidłowych wartości w modelu, w którym mogą wrzucić klucz do obliczeń. W jakiś sposób chcę zaktualizować model tylko wtedy, gdy wartość w kontrolce formularza jest poprawna. W przypadku nieprawidłowych wartości zmiana wartości kontrolnej jest w porządku, gdy wartość modelu pozostaje stała.

Jeśli zmienię źródło kąta (1.2rc) implementacja NgModelController $ setViewValue:

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

Do tego:

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

Wydaje się, że robi dokładnie to, czego chcę, jednak nie wiem, jak to zrobić we właściwy sposób. Jaki jest właściwy sposób na zmianę tego zachowania? Czy z jakiegoś powodu moje próby skazane są na niepowodzenie?

Aktualizacja: Dodano przykład.

Na przykład spójrz nahttp://jsfiddle.net/FJvgK/1/ HTML:

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

A JS:

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

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

Numer wyświetla się poprawnie dla wartości od 10 do 20, ale chcę go, aby nagle wpisać „8” w polu lub usunąć drugą cyfrę, pozostawiając „1”, ostatni prawidłowy numer nadal jest wyświetlany powyżej. Oznacza to, że model zawsze ma poprawną wartość, nawet jeśli formant nie.

questionAnswers(3)

yourAnswerToTheQuestion