Angular: Empty Fiddle

http://angularjs.org/

HTML

<script src="http://code.angularjs.org/angular-1.0.1.js"></script>
<div ng-controller="MyCtrl">
  Hello, {{name}}!
  <div auto-focus="{{condition}}">
  

      
      
      <div ng-repeat="field in fields" ng-init="condition = $last">
          <input name="test" value="test" ng-disabled="field.disabled" ng-show="field.visible"  />      
      </div>
      
   

  </div>
</div>

CSS

#test {visibility: hidden}

JavaScript

var myApp = angular.module('myApp', []);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});

function MyCtrl($scope) {
  $scope.name = 'Superhero';
  
  $scope.fields = [
  	{
        visible : true,
        disabled: true,
    },
    {
        visible : false,
        disabled: false,
    },
    {
        visible : true,
        disabled: false,
    }
  ];
}


myApp.directive('autoFocus', autoFocus);

    autoFocus.$inject = ['$timeout'];

    function autoFocus($timeout) {
        function link($scope, $element, $attrs) {
            var doms = $element[0];
            
            if ($attrs.autoFocus) {
                $scope.$watch($attrs.autoFocus, focus);
            } else {
                focus(true);
            }
            function focus(condition) {
            console.log('condition', condition);
                if (condition) {
                    $timeout(function() {
                      curDoms = doms.querySelectorAll('input:not(:disabled), textarea:not(:disabled)');
                      console.log(curDoms)
                      var found = null;
                      angular.forEach(curDoms, function(dom) {
                          if (!isHidden(dom) && found === null) found = dom;
                      });
                      if (found === null) return;
                        found.focus();
                    }, $scope.$eval($attrs.focusDelay) || 0);
                }
            }
            function isHidden(el) {
              var style = window.getComputedStyle(el);
              if (style.visibility == 'hidden') return true;
              return (el.offsetParent === null)
          	}
        }
        return {
            restrict: 'A',
            link: link
        };
    }