Цей пост показує приклад директиви, яка затримує зміни моделі на вхідні дані, доки не спрацює подія розмиття .
Ось скрипка, в якій показано, як ng-change працює з новою директивою ng-model-on-blur. Зверніть увагу, що це невелика корекція оригінальної скрипки .
Якщо ви додасте директиву до свого коду, ви зміните прив'язку до цього:
<input type="text" ng-model="name" ng-model-onblur ng-change="update()" />
Ось директива:
// override the default input to update on blur
angular.module('app', []).directive('ngModelOnblur', function() {
return {
restrict: 'A',
require: 'ngModel',
priority: 1, // needed for angular 1.2.x
link: function(scope, elm, attr, ngModelCtrl) {
if (attr.type === 'radio' || attr.type === 'checkbox') return;
elm.unbind('input').unbind('keydown').unbind('change');
elm.bind('blur', function() {
scope.$apply(function() {
ngModelCtrl.$setViewValue(elm.val());
});
});
}
};
});
Примітка: як згадує @wjin у коментарях нижче, ця функція підтримується безпосередньо в Angular 1.3 (на даний момент у бета-версії) через ngModelOptions. Докладнішу інформацію див. У документації .