Was bedeutet "erfordern" von Direktivendefinitionsobjekten?

require - Erfordert, dass ein anderer Controller an die aktuelle Direktivenverknüpfungsfunktion übergeben wird. Die Anforderung benötigt einen Namen des Direktiven-Controllers, der übergeben werden soll. Wenn kein solcher Controller gefunden werden kann, wird ein Fehler ausgelöst. Dem Namen kann Folgendes vorangestellt werden:

? - Erhebe keinen Fehler. Dies macht die erforderliche Abhängigkeit optional.^ - Suchen Sie den Controller auch für übergeordnete Elemente.

Oben ist die Definition aus den offiziellen Dokumenten. Die Mehrdeutigkeit ist hier, was genau ein "Direktiven-Controller" ist.

Nehmen Sie dietabs-Direktive aus dem anglejs-ui-Bootstrap-Projekt, als Beispiel.

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

Daspane Richtlinie hatrequire: '^tabs', in welchemtabs ist der Name einer Direktive in ihrem übergeordneten Element, während der Name des Controllers, der an diese Direktive angehängt ist, lautetTabsController. Nach meiner eigenen Interpretation der obigen Definition hätte es so sein müssenrequire: '^TabsController' nichtrequire: '^tabs' und das ist offensichtlich falsch. Bitte sagen Sie mir, was mir in meinem Verständnis fehlt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage