在服务中使用angular.injector()时出现错误。
在服务中使用angular.injector()时出现错误。
我正在尝试在Angular中创建一个服务,并在其中使用Angular的$injector.get(...)
来获取一个服务。
(我知道可以注入它,但我想手动创建它)。
由于某种原因,我得到了这个错误:
未捕获错误:[$injector:unpr] 未知的提供者:
$rootElementProvider <- $rootElement <- $location <- $urlRouter <- $state <- $location
(function () { var $injector = angular.injector(["myApp"]); //这是我得到错误的地方 var myService= $injector.get("myService"); var pseudoService = function(){ var service = myService; return{ service:service } } app.factory("pseudoService", pseudoService); }(angular));
这是我创建的一个plunker。
希望能准确地展示问题。
错误出现的原因是在代码中使用了angular.injector()函数,但未明确添加ng模块。解决方法是在angular.injector()函数中明确添加ng模块。
具体代码如下:
index.html
AngularJS Plunker Hello {{name}}!
app.js
var app = angular.module('plunker', []); app.controller('MainCtrl', function($scope) { $scope.name = 'World'; var $injector = angular.injector(['ng', 'plunker']); var a = $injector.get('myService') console.log(a); }); app.factory('pseudoService', pseudoService); var pseudoService = function(){ var service = myService; myService.sayHello(); return{ service:service } } var myService = function(){ var sayHello = function(){ alert("Hello") } return{ sayHello:sayHello } } app.service('myService', myService);
在这个例子中,我们创建了一个名为plunker的AngularJS应用程序,并在MainCtrl控制器中使用angular.injector()函数来获取myService服务。在调用angular.injector()函数时,我们明确添加了ng模块,以确保服务可用。
这样,当我们运行这段代码时,就不会再出现错误了。