1

如果我在表单验证中使用ng-model-option's 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或者任何人都可以解释为什么会发生这种情况?

4

1 回答 1

3

发生这种情况是因为value传递给您的 setter 可以是undefined,欺骗您的 getterSetter 将“setter”调用作为“getter”调用处理。

将您的条件从 更改value !== undefinedarguments.length将解决您的问题:更新的 plnkr

于 2016-07-20T15:27:53.227 回答