Что «требует» объект определения директивы?

require - Требовать, чтобы другой контроллер передавался в текущую функцию связывания директив. Требование принимает имя контроллера директивы для передачи. Если такой контроллер не может быть найден, возникает ошибка. Имя может начинаться с префикса:

? - Не надоне выдавать ошибку. Это делает обязательную зависимость необязательной.^ - Ищите контроллер на родительских элементах.

Выше определение из официальных документов. Неоднозначность здесь заключается в том, что именнодирективный контроллер ".

Возьмитедиректива tabs из проекта начальной загрузки angularjs-ui, В качестве примера.

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

pane директива имеетrequire: '^tabs', в которомtabs это имя директивы на его родительском элементе, в то время как имя контроллера, прикрепленного к этой директивеTabsController, Исходя из моей собственной интерпретации приведенного выше определения, это должно было бытьrequire: '^TabsController' неrequire: '^tabs' и этоочевидно, неправильно. Пожалуйста, скажите мне, что мне не хватает в моем понимании.

Ответы на вопрос(2)

Ваш ответ на вопрос