2015-02-08 83 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每次更改。