1
說我有一個這樣的元素:如何在編譯後訪問編譯元素的模板?
<elemental></elemental>
我可以通過運行拉動範圍:
angular.element($('elemental')).scope()
是否有可能它已經以類似的方式從編譯後得到一個元素的源模板dom?
說我有一個這樣的元素:如何在編譯後訪問編譯元素的模板?
<elemental></elemental>
我可以通過運行拉動範圍:
angular.element($('elemental')).scope()
是否有可能它已經以類似的方式從編譯後得到一個元素的源模板dom?
雖然我認爲這個用例應該很少見(即你的代碼在Angular「世界」之外運行),但這是可能的。我給了指令,具有相同名稱的ID,所以我可以通過DOM找到它,但這可能使用的是應用程序的一部分的任何DOM元素來完成:
var appElement = angular.element(document.getElementById('elemental'));
var injector = appElement.injector();
var myTemplate = injector.get('elementalDirective')[0].template;
console.log(myTemplate); // the template
首先,獲取應用程序的injector 。然後找到自定義指令的提供者,該指令始終是指令的名稱加上字符串「指令」(在本例中爲elementalDirective
)。然後訪問模板屬性。
參見:Call Angular JS from legacy code
編輯:我以前的答案承擔了元素尚未編譯。
不知道它是如何工作的 – vittore
@vittore感謝您的評論,我更新了我的答案。 – sh0ber
我應該給一個沉重的解釋。這並不能解決我的具體用例,但它是對角度非常有用的見解......所以謝謝! – RandallB