使用 ng-model-optios getterSetter 时无法输入无效的视图值



如果在表单验证中使用ng-model-optiongetterSetter,则不能在输入中输入任何无效内容。例如

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进行表单验证的变通方法吗?或者有人能解释为什么会发生这种情况吗?

之所以会发生这种情况,是因为传递给setter的value可能是undefined,从而诱使getterSetter将"setter"调用处理为"getter"调用。

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

最新更新