1
我可以推迟模型更新,直到与ng-model-options="{ updateOn: 'blur' }"
模糊。这可以防止用户在第一次输入输入时改变验证状态。但是,当用户返回验证失败以修改该验证时,updateOn: 'blur'
会阻止在用户修复验证状态时(但在他们离开该字段之前)更新验证状态。只在第一次模糊更新
如何重置updateOn
选项以允许一个模糊后的默认模型更新计划?
我可以推迟模型更新,直到与ng-model-options="{ updateOn: 'blur' }"
模糊。这可以防止用户在第一次输入输入时改变验证状态。但是,当用户返回验证失败以修改该验证时,updateOn: 'blur'
会阻止在用户修复验证状态时(但在他们离开该字段之前)更新验证状态。只在第一次模糊更新
如何重置updateOn
选项以允许一个模糊后的默认模型更新计划?
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>
但是,如果你想实际的形式状态不更新,那么你'd需要另一个指令作为ngModelOptions
的正面,导致$compile
每次更改。
我删除了我的答案,因为它与表单状态混淆。如果我找到更好的解决方案,我会发布更新。 – tasseKATT 2015-02-08 21:22:58
酷,谢谢你的尝试。 – 2015-02-08 21:24:45
@DougLuce,答案是否解决了你的问题? – 2015-02-11 23:21:25