W poniższym przykładzie dyrektywa grupy akordeonowej współdzieli kontroler i zakres z akordeonem macierzystym, używając atrybutu "require:" ^ akordeon "w dyrektywie grupy akordeonowej.
Gdybym chciał stworzyć dyrektywę dziecięcą, w ramach grupy akordeonowej, w jaki sposób miałby dostęp do kontrolera akordeonu? Żądanie ^ accordion i ^ accordionGroup wydaje się nie działać.
https://github.com/angular-ui/bootstrap/blob/master/src/accordion/accordion.js
Odpowiedzi:
1 dla odpowiedzi № 1Działa to w ten sposób. Po prostu byłem głupi. Fiddle dla potomności tutaj.
"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);
}
}
});