要求 - 要求另一控制器传递到当前指令链接功能。 在需要采取指令控制器的名字来传递。如果能找到这样的控制器将引发一个错误。 该名称可以与前缀:
- ? - 不产生错误。 这使得需要依赖可选。
- ^ - 查找在父元素控制器为好。
以上是从官方文档的定义。 这里的不确定性是到底什么是“指令控制器”。
就拿标签指令从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'
,这就是明显的错误。 请告诉我我在我的理解缺失。