module.exports = function focusElementDirective($parse, $timeout) { return { restrict: 'A', link: function(scope, element, attrs) { var model = $parse(attrs.focusElement) scope.$watch(model, function(value) { if (value === true) { $timeout(function() { element[0].focus() }) } }) element.bind('blur', function() { if (model && model.assign) { scope.$apply(model.assign(scope, false)) } }) } } }