Aqui está um exemplo usando ng-messages (disponível no angular 1.3) e uma diretiva personalizada.
A mensagem de validação é exibida em desfoque na primeira vez que o usuário deixa o campo de entrada, mas quando ele corrige o valor, a mensagem de validação é removida imediatamente (não está mais desfocada).
JavaScript
myApp.directive("validateOnBlur", [function() {
var ddo = {
restrict: "A",
require: "ngModel",
scope: {},
link: function(scope, element, attrs, modelCtrl) {
element.on('blur', function () {
modelCtrl.$showValidationMessage = modelCtrl.$dirty;
scope.$apply();
});
}
};
return ddo;
}]);
HTML
<form name="person">
<input type="text" ng-model="item.firstName" name="firstName"
ng-minlength="3" ng-maxlength="20" validate-on-blur required />
<div ng-show="person.firstName.$showValidationMessage" ng-messages="person.firstName.$error">
<span ng-message="required">name is required</span>
<span ng-message="minlength">name is too short</span>
<span ng-message="maxlength">name is too long</span>
</div>
</form>
PS. Não se esqueça de baixar e incluir ngMessages em seu módulo:
var myApp = angular.module('myApp', ['ngMessages']);