如何从根Angular对象获取$ rootElement

时间:2014-05-24 00:58:53

标签: angularjs

我的目标是在任意Angular项目中找到根元素,如果我拥有的是angular对象。这显然不是非常犹太人,所以黑客攻击解决方案会做到。

我的第一个方法是find("[ng-app]"),但这在启动的应用程序上失败了。我一直在玩各种角度模块,我陷入了僵局。

我可以angular.injector(['ng']).get('$rootScope')来获取根范围。为什么我不能这样做 angular.injector(['ng']).get('$rootElement')获取根元素?

1 个答案:

答案 0 :(得分:15)

angular.injector创建一个新的注入器函数,它不会返回与引导的应用程序关联的函数。

Angular中的服务是单例,因为每个注入器只创建一次,这意味着以下代码:

angular.injector(['ng']).get('$rootScope')

每次执行时都会创建一个新的注入器函数和一个新的$rootScope

以下一行:

angular.injector(['ng']).get('$rootElement')

将创建一个新的注入器功能并尝试检索$rootElement,这对于新创建的注射器是不存在的。

您需要检索当前应用的注入器:

angular.element(DOMElement).injector();

对于您的具体情况,您可以找到与范围关联的第一个元素并从那里开始:

var element = document.querySelector('.ng-scope');
var $rootElement = angular.element(element).injector().get('$rootElement');
console.log($rootElement);

演示: http://plnkr.co/edit/mQ5ZibnV0Jg8DreXn0w9?p=preview