未知提供程序:在angular.bootstrap之前使用$injector获取$location服务时使用$rootE
Unknown provider: $rootElementProvider when using $injector to get $location service before angular.bootstrap
你好,我正在尝试手动引导一个angular应用程序,但有一些业务需要首先处理。这篇文章提到了我感兴趣的技术。
当我注入这个:
var $injector = angular.injector(["ng"]);
var $http = $injector.get("$http");
它运行良好,但这个:
var $injector= angular.injector(["ng", "myApp"]);
var $location = $injector.get("$location");
引发以下错误。
Uncaught Error: [$injector:unpr] Unknown provider: $rootElementProvider <- $rootElement <- $location <- $location
有可能在angular.bootstrap之前获得$location吗?
非常感谢!
为了在引导之前获得$location
,您基本上需要提供$rootElement
。一种方法是模拟它:从angular-mocks
注入ngMock
模块以获得注入器。
var $injector= angular.injector(['ng','ngMock',"plunker"]);
var $location = $injector.get("$location");
Plunker
或者,通过创建一个模拟应用程序并在获取注入器时包含它,自己提供rootElement。
var mockApp = angular.module('mockApp', []).provider({
$rootElement:function() {
this.$get = function() {
return angular.element('<div ng-app></div>');
};
}
});
var $injector= angular.injector(['ng','mockApp',"plunker"]);
var $location = $injector.get("$location");
Plunker
或者其他方式(基于您的可行性)是使用window.location.从窗口获取位置
同样值得注意的是github 上的这个线程
根元素必须插入到文档中。看见http://plnkr.co/edit/OrgStgw4NpjU2LcIFXsB
var rootElement = angular.element(document);
var mockApp = angular.module('mockApp', []).provider({
$rootElement:function() {
this.$get = function() {
return rootElement;
};
}
});
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery试图按名称获取按钮位置
- 如何在jQuery中获取元素的形式
- 如何在php文件中获取$.post-ajax传递的值
- 在Shopify中获取博客文章的图片
- 使用Javascript获取所选选项ID
- 在jQuery中获取表的行索引
- 使用jquery将mysql数据获取到新的表行中
- 在动态创建的元素上获取对特定选择器的引用
- 从城市名称获取惊喜
- Angular只从数组中获取所需的数据
- 无法将数据从firebase获取到我的html页面
- 从ajax请求中获取javascript对象
- 如何从画布上的某个移动事件中获取X和Y
- 获取未捕获错误:anuglar.js中的[$injector:modulerr]
- 未知提供程序:在angular.bootstrap之前使用$injector获取$location服务时使用$rootE
- 获取js错误-未捕获错误:[$injector:modulerr]
- 获取错误"错误:$injector:modulerr模块错误"
- 获取"错误:[$injector:unpr]未知提供商"错误
- 使用 $injector.get() 在 Angular 中获取我的依赖项有什么缺点吗?