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