Не записывайте неверные значения с помощью ng-модели

Мне очень нравится, как атрибут ng-model привязывается непосредственно к моей модели, и пользователи получают мгновенную обратную связь об их изменениях. Для моего случая использования это идеально. Тем не менее, я не хочу, чтобы в модель вводились недопустимые значения, чтобы они могли бросить рывок в вычисления. Я почему-то хочу, чтобы модель обновлялась только в том случае, если значение в элементе управления формы допустимо. Для недопустимых значений можно изменить значение элемента управления, пока значение модели остается фиксированным.

Если я изменю источник угловой (1.2rc) реализации $ setViewValue в NgModelController:

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

К этому:

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

Кажется, он делает именно то, что я хочу, однако я не знаю, как это сделать правильно. Как правильно изменить это поведение? Или мои попытки по какой-то причине обречены на провал?

Обновление: добавлен пример.

Например, посмотрите наhttp://jsfiddle.net/FJvgK/1/ HTML:

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

И JS:

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

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

Число отображается правильно для значений от 10 до 20, но я хочу, чтобы, если вы внезапно набрали «8» в поле или удалили вторую цифру, оставив «1», последнее действительное число все еще отображается выше. То есть модель всегда имеет допустимое значение, даже если элемент управления не имеет.