在输入控件上丢失焦点后更新模型

时间:2014-07-01 14:39:27

标签: angularjs

在此代码中:

<input class="form-control" ng-model="actionText" />

当用户输入内容时,AngularJS将更新模型actionText。如果此模型正在其他地方使用,例如在控制器中,则会在键入每个字符时更新。我可以想到那些实际上可能是坏事的情况。也许您只需要用户将焦点从输入移动到其他内容后的模型值,例如当您需要在输入完成时验证输入时。我可以使用Javascript的模糊函数来设置处理程序,以确定何时焦点丢失,但这似乎与Angular的方式相反。在输入失去焦点后是否有AngularJS更新模型的方法?

2 个答案:

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