我可以推迟模型更新,直到使用ng-model-options="{ updateOn: 'blur' }"
模糊。这可以防止在第一次输入输入时使用户改变验证状态。但是,当用户返回失败的验证以进行修改时,updateOn: 'blur'
会阻止验证状态在用户修复时(但在他们离开字段之前)更新。
如何重置updateOn
选项以在一次模糊后允许默认模型更新计划?
答案 0 :(得分:0)
ngModelOptions
指令$evals its value,但没有观察到更改。换句话说,您无法通过以下内容实现您所需的目标:
<input ng-model="foo" ng-model-options="fooOptions">
然后在控制器中更改它:
$scope.fooOptions = {updateOn: "blur"};
$scope.changeOptions = function(){
$scope.fooOptions = {updateOn: "default"};
}
对于简单的情况,您可以添加另一个变量来更改验证消息的显示方式:
<form name="form1">
<input name="foo"
ng-model="foo" ng-model-options="{updateOn: 'default'}"
ng-blur="startShowingErrors = true" minlength="3">
<span ng-show="startShowingErrors && form1.foo.$invalid">invalid entry</span>
</form>
但是,如果您希望实际的表单状态不更新,那么您需要另一个指令作为ngModelOptions
的外观,以便在每次更改时生成$compile
。