使用 ng-model-optios getterSetter 时无法输入无效的视图值
Can't enter invalid view value when using 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
进行表单验证的解决方法,或者任何人都可以解释为什么会这样吗?
发生这种情况是因为传递给您的 setter 的 value
可能是 undefined
,诱使您的 getterSetter 将 "setter" 调用作为 "getter" 调用来处理。
将您的条件从 value !== undefined
更改为 arguments.length
将解决您的问题:Updated plnkr
如果我使用 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
进行表单验证的解决方法,或者任何人都可以解释为什么会这样吗?
发生这种情况是因为传递给您的 setter 的 value
可能是 undefined
,诱使您的 getterSetter 将 "setter" 调用作为 "getter" 调用来处理。
将您的条件从 value !== undefined
更改为 arguments.length
将解决您的问题:Updated plnkr