如何在编译后访问编译元素的模板?

时间:2013-06-05 23:25:16

标签: angularjs angularjs-directive

说我有这样的元素:

<elemental></elemental>

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

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

是否有可能在从dom以类似方式编译元素的源模板后获取它?

1 个答案:

答案 0 :(得分:0)

虽然我认为这个用例应该非常少见(即你的代码在Angular“world”之外运行),但这是可能的。我已经为该指令指定了一个具有相同名称的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。然后找到自定义指令的提供程序,该指令将始终是指令的名称加上字符串'Directive'(在本例中为elementalDirective)。然后访问模板属性。

演示: Here is a fiddle

另请参阅:Call Angular JS from legacy code


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