/ / Dostęp do nadrzędnych kontrolerów nadrzędnych za pomocą Angular require attribute - angularjs, angularjs-directive

Dostęp do nadrzędnych kontrolerów nadrzędnych za pomocą Angular require attribute - angularjs, angularjs-directive

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 № 1

Dział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);
}
}
});