Ce post montre un exemple d'une directive que les retards les changements de modèle à une entrée jusqu'à ce que le flou de l' événement se déclenche.
Ici est un violon qui montre la ng-changement de travailler avec le nouveau ng-model-sur-le flou de la directive. Remarque c'est une légère ajuster à l' origine de violon.
Si vous ajoutez la directive de votre code, vous pouvez modifier votre liaison à ceci:
<input type="text" ng-model="name" ng-model-onblur ng-change="update()" />
Voici la directive:
// 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());
});
});
}
};
});
Remarque: comme @wjin mentionne dans les commentaires ci-dessous cette fonctionnalité est prise en charge directement dans Angulaire 1.3 (actuellement en bêta) par ngModelOptions
. Voir la doc pour plus d'info.