Co zabiera „wymaganie” obiektu definicji dyrektywy?

require - Wymagaj przekazania innego kontrolera do bieżącej funkcji łączenia dyrektyw. Requ wymaga nazwy kontrolera dyrektywy do przekazania. Jeśli nie można znaleźć takiego kontrolera, pojawia się błąd. Nazwę można poprzedzić:

? - Nie zgłaszaj błędu. To sprawia, że ​​wymagana zależność jest opcjonalna.^ - Poszukaj także kontrolera na elementach macierzystych.

Powyżej znajduje się definicja z oficjalnych dokumentów. Niejednoznaczność jest tym, co dokładnie jest „kontrolerem dyrektywy”.

Weźdyrektywy tabs z projektu bootstrap angularjs-ui, jako przykład.

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
  };
}]);

Thepane dyrektywa marequire: '^tabs', w którymtabs jest nazwą dyrektywy dotyczącej elementu nadrzędnego, podczas gdy nazwa kontrolera dołączonego do tej dyrektywy toTabsController. Z mojej własnej interpretacji powyższej definicji powinno byćrequire: '^TabsController' nierequire: '^tabs' a to oczywiście nie tak. Proszę mi powiedzieć, czego mi brakuje w moim zrozumieniu.

questionAnswers(2)

yourAnswerToTheQuestion