2013-06-05 55 views

回答

0

雖然我認爲這個用例應該很少見(即你的代碼在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)。然後訪問模板屬性。

演示:Here is a fiddle

參見:Call Angular JS from legacy code


編輯:我以前的答案承擔了元素尚未編譯。

+0

不知道它是如何工作的 – vittore

+0

@vittore感謝您的評論,我更新了我的答案。 – sh0ber

+0

我應該給一個沉重的解釋。這並不能解決我的具體用例,但它是對角度非常有用的見解......所以謝謝! – RandallB