Невозможно ввести недопустимое значение представления при использовании ng-model-optios getterSetter

Если я использую ng-model-option getterSetter с проверкой формы, я не могу ввести что-либо недопустимое во входные данные. например

HTML

<input type="number" ng-model-options="{getterSetter: true}" ng-model="ctrl.myVal" min="10">

JS

this.myVal = function(value) {
  if (value !== undefined) {
    this.actualVal = value;
  } else {
    return this.actualVal;
  }
};

https://plnkr.co/edit/dUPXiD1elGfqZSf9x9Bk?p=preview

С этим входом я не могу ввести любое число, так как оно будет меньше 10.

Я пытаюсь получить то же поведение, что и без getterSetter. А именно: пользователь может ввести любой недопустимый ввод в представлении, но модель будет установлена ​​только тогда, когда ввод действителен.

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


person rob    schedule 20.07.2016    source источник


Ответы (1)


Это происходит из-за того, что value, переданный вашему установщику, может быть undefined, обманывая ваш getterSetter, заставляя его обрабатывать вызов "setter" как вызов "getter".

Изменение условия с value !== undefined на arguments.length устранит проблему: Обновлен plnkr

person gkalpak    schedule 20.07.2016