Sie second link zeigt die Kompilierung der Kern-Winkel-Direktiven. Die .directive
Funktion der Kompilierungsprovider ist mit $provide.provider('$compile', $CompileProvider).
erstellt Ihr erster Link zeigt die Deklaration ngInclude
und ngIncludeFillContentDirective
. Sie können sehen, dass ngIncludeFillContentDirective
auf ngInclude
abhängt.
Ich bin mir ziemlich sicher, dass während der Kompilierung ngInclude
zuerst kompiliert werden muss, bevor ngIncludeFillContentDirective
kompiliert wird.
Also ich glaube, das ist mit .directive
verkettet, um den Kompilierungsvorgang zu bestellen und die Abhängigkeiten in der richtigen Reihenfolge aufzubauen.
EDIT:
So here is the current source für $CompileProvider
. Es gibt eine Funktion für dieses Objekt mit dem Namen directive
. Dies ist die Funktion, die im OP aufgerufen wird.
können Sie sehen, dass, wenn der Parameter nicht eine Zeichenkette, die es nennt diese Linie auf dem Parameter-Objekt ist:
forEach(name, reverseParams(registerDirective));
Dies resultiert im Wesentlichen verwendet forEach
die Eigenschaften des Parameter-Objekts iterieren. forEach
zieht den Schlüssel aus dem Objekt und dann tut dies:
iterator.call(context, obj[key], key);
Also, es wird nur den Wert des Schlüssels.
Ich denke, was darauf hinausläuft, ist, dass der Name der Eigenschaft im Objekt (So, ngInclude
in {ngInclude: ngIncludeFillContentDirective}
) muss nur eindeutig sein. Der Wert der Eigenschaft (ngIncludeFillContentDirective
) ist, was registriert ist.
Es scheint also keine besondere Bedeutung zu geben. Zumindest keine die ich finden kann.
Richtig, aber es ist mit dem gleichen Namen deklariert. Wenn Sie also ein "ng-include" -Element erstellen würden, würden beide Direktiven aufgerufen. – Zequez
@Zequez Ich habe die Antwort nach ein bisschen mehr Untersuchung bearbeitet. –