Причина, по которой это не реализовано, - это производительность. Обход DOM намного быстрее, чем проверка каждой дочерней ветви для возможного соответствия. По этой причине рекомендуется, чтобы дочерний элемент сообщал родителям о своем статусе.
Обратите внимание, что это делается через связанные экземпляры контроллера, а не через директивы.
Я обновил свой шлепнуть с working example
angular.module('foo', [])
.directive('parentDirective', function() {
return {
controller: function($scope) {
$scope.childs = {};
this.registerChild = function(child) {
$scope.childs[child.name] = child;
};
},
link: function(scope, element, attrs) {}
};
})
.directive('childDirective', function() {
return {
controller: function($scope) {},
require: ['^parentDirective', 'childDirective'],
link: function($scope, $element, $attrs, $ctrls) {
var parent = $ctrls[0];
var child = $ctrls[1];
child.name = $attrs.childDirective;
parent.registerChild(child);
}
};
});