假设我有这样的元素:
<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
首先,获取应用程序的注入器。然后找到自定义指令的提供者,它始终是指令的名称加上字符串“Directive”(在本例中elementalDirective
)。然后访问模板属性。
演示: 这是一个小提琴
另请参阅:从遗留代码调用 Angular JS
编辑:我之前的回答假设该元素尚未编译。