我的目标是找到任意 Angular 项目中的根元素(如果我所拥有的只是angular
目的。这显然不太合规,所以一个破解的解决方案就可以了。
我的第一个方法是find("[ng-app]")
,但这在引导应用程序上失败。我一直在尝试各种角度模块,但陷入了僵局。
我可以angular.injector(['ng']).get('$rootScope')
获取根范围。为什么我不能这样做angular.injector(['ng']).get('$rootElement')
获取根元素?
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);
Demo: http://plnkr.co/edit/mQ5ZibnV0Jg8DreXn0w9?p=preview http://plnkr.co/edit/mQ5ZibnV0Jg8DreXn0w9?p=preview
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)