1

假设我有这样的元素:

<elemental></elemental>

我可以通过运行来拉取范围:

angular.element($('elemental')).scope()

在以类似方式从 DOM 编译后,是否可以获取元素的源模板?

4

1 回答 1

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

首先,获取应用程序的注入器。然后找到自定义指令的提供者,它始终是指令的名称加上字符串“Directive”(在本例中elementalDirective)。然后访问模板属性。

演示: 这是一个小提琴

另请参阅:从遗留代码调用 Angular JS


编辑:我之前的回答假设该元素尚未编译。

于 2013-06-06T00:09:44.810 回答