说我有这样的元素:
<elemental></elemental>
我可以通过运行来拉动范围:
angular.element($('elemental')).scope()
是否有可能在从dom以类似方式编译元素的源模板后获取它?
答案 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
编辑:我之前的回答是假设元素尚未编译。