我在AngularJS中使用ui-bootstrap的datepicker輸入。它的ngModel和結合到ngBlur事件validatioon方法:ngBlur後更新ngModel
<input id="startDate" type="text" ng-model="myCtrl.startDate" ng-blur="myCtrl.validateDate()"/>
驗證方法檢查,如果需要,根據組的控制器中的規則,並提醒ngModel。以下是控制器的相關部分:
var vm = this;
vm.startDate = new Date();
vm.minStartDate = new Date(2000,1,1);
vm.validateDate = function(){
if(vm.startDate < vm.minStartDate)
alert("Start date can't be earliar than 2000");
}
問題是驗證方法在更新模型之前運行。示例場景如下:
規則:startDate不能早於。 頁面加載時,startDate值最初設置爲今天。用戶從日曆中選擇31.12.1999,調用ngBlur方法。但是,ngModel尚未更新。因此,驗證檢查今天的價值,並說好。實際上,它應該用31.12.1999檢查ngModel的值。該值在輸入視圖上同時發生變化,但在背景中,它會在啓動模糊方法後設置。據我所知,AngularJS中的雙向綁定通常用於此目的,但ngBlur必須是一個例外。
我已經嘗試了很多東西,如;通過修改輸入元件
ng-model-options="{ updateOn: 'blur' }"
使用前,後的連接:
添加NG-模型的選項的部件
但是,以上都沒有工作,仍然ng模糊之前運行模型已更新。