2015-02-08 87 views
1

我可以推迟模型更新,直到与ng-model-options="{ updateOn: 'blur' }"模糊。这可以防止用户在第一次输入输入时改变验证状态。但是,当用户返回验证失败以修改该验证时,updateOn: 'blur'会阻止在用户修复验证状态时(但在他们离开该字段之前)更新验证状态。只在第一次模糊更新

如何重置updateOn选项以允许一个模糊后的默认模型更新计划?

+0

我删除了我的答案,因为它与表单状态混淆。如果我找到更好的解决方案,我会发布更新。 – tasseKATT 2015-02-08 21:22:58

+0

酷,谢谢你的尝试。 – 2015-02-08 21:24:45

+0

@DougLuce,答案是否解决了你的问题? – 2015-02-11 23:21:25

回答

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> 

但是,如果你想实际的形式状态不更新,那么你'd需要另一个指令作为ngModelOptions的正面,导致$compile每次更改。