在服务中使用angular.injector()时出现错误。

19 浏览
0 Comments

在服务中使用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。

希望能准确地展示问题。

plunker

0
0 Comments

在使用angular.injector()函数时出现错误的原因是没有在注入器构造函数中首先添加'ng'模块。解决方法是在注入器构造函数中添加'ng'模块:

angular.injector(['ng', 'plunker']);

0
0 Comments

错误出现的原因是在代码中使用了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模块,以确保服务可用。

这样,当我们运行这段代码时,就不会再出现错误了。

0