我的目标是在任意Angular项目中找到根元素,如果我拥有的是angular对象.这显然不是非常犹太,所以一个被黑客入侵的解决方案就可以了.
我的第一个方法是find("[ng-app]"),但这在自举应用程序上失败了.我一直在玩各种角度模块,我陷入了僵局.
我可以做到angular.injector(['ng']).get('$rootScope')获得根范围.为什么我不能这样做
angular.injector(['ng']).get('$rootElement')才能获得根元素?
tas*_*ATT 15
angular.injector 创建一个新的注入器函数,它不会返回与引导的应用程序关联的那个.
Angular中的服务是单例,因为每个注入器只创建一次,这意味着以下代码:
angular.injector(['ng']).get('$rootScope')
Run Code Online (Sandbox Code Playgroud)
$rootScope每次执行时都会创建一个新的喷油器功能和一个新功能.
以下行:
angular.injector(['ng']).get('$rootElement')
Run Code Online (Sandbox Code Playgroud)
将创建一个新的注入器函数并尝试检索$rootElement新创建的注入器不存在的函数.
您需要检索当前应用的注入器:
angular.element(DOMElement).injector();
Run Code Online (Sandbox Code Playgroud)
对于您的特定情况,您可以找到与范围关联的第一个元素并从那里开始:
var element = document.querySelector('.ng-scope');
var $rootElement = angular.element(element).injector().get('$rootElement');
console.log($rootElement);
Run Code Online (Sandbox Code Playgroud)
演示: http ://plnkr.co/edit/mQ5ZibnV0Jg8DreXn0w9?p = preview
| 归档时间: |
|
| 查看次数: |
4653 次 |
| 最近记录: |