仅在第一次模糊更新

时间:2015-02-08 17:34:41

标签: javascript angularjs

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

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

1 个答案:

答案 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