title: What does "require" of directive definition object take?
body: <blockquote>
  <p>require - Require another controller be passed into current directive
  linking function. The require takes a name of the directive controller
  to pass in. If no such controller can be found an error is raised. The name can be prefixed with:</p>
  <ul>
  <li>? - Don't raise an error. This makes the require dependency optional.</li>
  <li>^ - Look for the controller on parent elements as well.</li>
  </ul>
  </blockquote>
  <p>Above is the definition from the official docs. The ambiguity here is what exactly is a &quot;directive controller&quot;.</p>
  <p>Take the <a href="https://github.com/angular-ui/bootstrap/blob/master/src/tabs/tabs.js" rel="noreferrer">tabs directive from the angularjs-ui bootstrap project</a>, as an example.</p>
  <pre><code>angular.module('ui.bootstrap.tabs', [])
  .controller('TabsController', ['$scope', '$element', function($scope, $element) {
    ... // omitted for simplicity
  }])
  .directive('tabs', function() {
    return {
      restrict: 'EA',
      transclude: true,
      scope: {},
      controller: 'TabsController',
      templateUrl: 'template/tabs/tabs.html',
      replace: true
    };
  })
  .directive('pane', ['$parse', function($parse) {
    return {
      require: '^tabs',
      restrict: 'EA',
      transclude: true,
      scope:{
        heading:'@'
      },
      link: function(scope, element, attrs, tabsCtrl) {
        ... // omitted for simplicity
      },
      templateUrl: 'template/tabs/pane.html',
      replace: true
    };
  }]);
  </code></pre>
  <p>The <code>pane</code> directive has <code>require: '^tabs'</code>, in which <code>tabs</code> is the name of a directive on its parent element, while the name of the controller attached to that directive is <code>TabsController</code>. From my own interpretation of the above definition, it should have been <code>require: '^TabsController'</code> not <code>require: '^tabs'</code> and that's obviously wrong. Please tell me what am I missing in my comprehension.</p>