Die Verwendung von mehreren Richtlinien, die in erfordern mit Angularjs
Habe ich die situation, wo ich muss den Zugriff auf mehrere Richtlinie controller-Methoden.
Kann ich den Zugriff auf eine Methode von einer übergeordneten Richtlinie mit dem verlangen, etwa so:
require:"^parentDirective"
aber ich brauche auch einen Zugriff auf eine Methode in einer separaten Richtlinie (nicht die Eltern), die Dokumentation sagt verwenden Sie ein array von strings etwa so:
require:["^parentDirective","directiveTwo"]
aber dies bewirkt, dass Fehler, obwohl die beiden Richtlinien wurden zusammengestellt, um den DOM.
Bin ich hier etwas fehlt?
hier ist meine Richtlinie:
angular.module('testModule', ['parentModule'], function () {
}).directive('testDirective', function() {
return {
restrict: 'AE',
templateUrl: 'testTemplate.tpl.html',
scope: {
value1: "=",
value2: "="
},
require:['^parentDirective','otherDirective'],
controller: function($scope,$modal,socketConnection) {
if(case_x == true){
$scope.requiredController_1.ctrl1Func();
}
else if(case_x == false){
$scope.requiredController_2.ctrl2Func();
}
},
link: function(scope,element,attrs,requiredController_1,requiredController_2){
scope.requiredController_1 = requiredController_1;
scope.requiredController_2 = requiredController_2;
}
};
});
- Kann man alle drei Richtlinien in eine fiddle oder plunker? Das einzige, was ich sehe, falsch ist, der link-Funktion die Funktion erhält ein array von Controllern, die nicht jeden controller einzeln (es sei denn das wurde geändert).
- Hier ist ein plunker was ich bin versucht zu tun, aber es immer noch nicht zu funktionieren scheint und immer wieder, ich bin nicht sicher, warum.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dies ist nah an, was Sie wollen (hoffentlich):
http://plnkr.co/edit/WO6SROdVFOYlR22JQJPb?p=preview
Hier wurden einige Gedanken:
Ich denke, die
controller: function () {}
ausgeführt wird, auf dem Weg nach unten, in der Erwägung, dass dielink: function () {}
ausgeführt wird, auf dem Weg zurück nach oben (was passiert, wenn es geht nach unten den DOM-Baum), das heißt, Sie benötigt, um zu bewegen, Ihren code, hängt von den anderen Steuerungen aus der Richtlinie controller der Richtlinie-link-Funktion.Richtlinien nutzen, die
require
kann nur verlangen, Richtlinien über die übergeordneten Elemente (mit^
) oder das aktuelle element. Sie hatten in den html-Code, Zitat, Ihre Elemente alle Geschwister. Wenn, dass muss der Fall sein, müssen Sie wickeln alle Geschwister in einem vierten Richtlinie, dass Sie alle "require
".Wenn Sie
require: []
ein array übergeben wird in die link-Funktion. Daher:Tut, die Antwort auf alles?
Müssen Sie ein Komma nach der require-Anweisung
Hier ein plunker zu zeigen, dass es arbeitet, während die mehrere Richtlinien
AngularJS applications cannot be nested within each other