No exemplo abaixo, a diretiva de grupo acordeão compartilha um controlador e escopo com o acordeão pai, usando o atributo "require:" ^ accordion "" na diretiva de grupo acordeão.
Se eu quisesse criar uma diretiva filho, no grupo acordeão, como ele também acessaria o controlador de acordeão? Exigir ^ accordion e ^ accordionGroup parece não funcionar.
https://github.com/angular-ui/bootstrap/blob/master/src/accordion/accordion.js
Respostas:
1 para resposta № 1Funciona assim. Eu só estava sendo idiota. Violino para a posteridade Aqui.
"use strict";
angular.module("myApp", []).controller("OneController", function() {
this.test = function(element) {
element.css("color", "red");
}
}).directive("one", function() {
return {
restrict: "E",
transclude: true,
replace: true,
controller: "OneController",
template: "<span ng-transclude>And a </span>",
}
}).directive("two", function() {
return {
restrict: "E",
transclude: true,
replace: true,
require: "^one",
template: "<span ng-transclude>and a </span>",
}
}).directive("three", function() {
return {
restrict: "E",
transclude: true,
replace: true,
require: "^one",
template: "<span ng-transclude>and a one two</span>",
link: function(scope, element, attrs, ctrl) {
ctrl.test(element);
}
}
});