您second link顯示核心角度指令的彙編。 .directive
函數編譯提供程序使用$provide.provider('$compile', $CompileProvider).
您的第一個鏈接顯示聲明ngInclude
和ngIncludeFillContentDirective
。你可以看到ngIncludeFillContentDirective
取決於在ngInclude
。
我非常肯定,在編譯過程中,需要先編譯ngInclude
,然後編譯ngIncludeFillContentDirective
。
所以,我相信這是與.directive
鏈接訂購編譯過程,並建立在正確的順序依賴關係。
編輯:
所以,here is the current source爲$CompileProvider
。這個對象有一個名爲directive
的函數。這是OP中調用的功能。
你可以看到,如果參數不是字符串,它調用參數對象在這條線:
forEach(name, reverseParams(registerDirective));
這基本上使用forEach
迭代參數對象的屬性。 forEach
拉鍵調出的對象,然後做到這一點:
iterator.call(context, obj[key], key);
所以,它只能使用密鑰的值。
我想這是歸結於對象的屬性名稱(所以,ngInclude
在{ngInclude: ngIncludeFillContentDirective}
)只是必須是唯一的。該物業的價值(ngIncludeFillContentDirective
)是註冊的。
所以,似乎沒有任何特殊的含義。至少沒有我能找到的。
沒錯,但它是用相同的名字聲明的。所以創建一個「ng-include」元素,會調用這兩個指令? – Zequez
@Zequez我在更多調查後編輯了答案。 –