angular.module('app') .directive('uiFocus', function($timeout, $parse) { return { link: function(scope, element, attr) { var model = $parse(attr.uiFocus); scope.$watch(model, function(value) { if(value === true) { $timeout(function() { element[0].focus(); }); } }); element.bind('blur', function() { scope.$apply(model.assign(scope, false)); }); } }; });