在此代码中:
<input class="form-control" ng-model="actionText" />
当用户输入内容时,AngularJS将更新模型actionText。如果此模型正在其他地方使用,例如在控制器中,则会在键入每个字符时更新。我可以想到那些实际上可能是坏事的情况。也许您只需要用户将焦点从输入移动到其他内容后的模型值,例如当您需要在输入完成时验证输入时。我可以使用Javascript的模糊函数来设置处理程序,以确定何时焦点丢失,但这似乎与Angular的方式相反。在输入失去焦点后是否有AngularJS更新模型的方法?
答案 0 :(得分:15)
您可以使用ngModelOptions
指令。使用ngModelOptions
,您可以进一步优化ngModel
指令的工作方式。要实现您的要求,您可以像这样使用它:
<input class="form-control" ng-model="actionText"
ng-model-options="{ updateOn: 'blur'}"/>
您可以在角度文档中找到更多信息和工作示例:https://docs.angularjs.org/api/ng/directive/ngModelOptions
答案 1 :(得分:2)
我认为最简单的方法可能就是使用ng-blur
来启动您想要做的事情。
http://plnkr.co/edit/rhcliQRzUOBKQ3xKFrde?p=preview
app.controller('MainCtrl', function($scope) {
$scope.myDataBlurred = $scope.myData;
$scope.blurred = function() {
$scope.myDataBlurred = $scope.myData;
}
});
<input ng-model='myData' ng-blur='blurred()' />
<div>
This will update as you type: {{myData}}
</div>
<div>
This will update after you blur: {{myDataBlurred}}
</div>