【问题标题】:can't get service instance from $injector.get()无法从 $injector.get() 获取服务实例
【发布时间】:2013-07-27 16:18:23
【问题描述】:

我定义了一个名为“greeting”的客户服务,但无法从 $injector.get('greeting') 获取实例。它会抛出这样的错误:Unknown provider: greetingProvider 。那么获得它的正确方法是什么?以下是代码:

var app = angular.module('myDI', []);
app.config(function($provide){
    $provide.provider('greeting', function(){
        this.$get = function(){
             return function(name) {
                 console.log("Hello, " + name);
            };
        };
    });
});

var injector = angular.injector();
var greeting = injector.get('greeting');
greeting('Ford Prefect');

【问题讨论】:

标签: angularjs angularjs-service


【解决方案1】:

您需要从模块中创建注入器。

var app = angular.module('myDI', []);
app.config(function($provide){
    $provide.provider('greeting', function(){
        this.$get = function(){
             return function(name) {
                 console.log("Hello, " + name);
            };
        };
    });
});
var injector = angular.injector(['myDI', 'ng']); //Add this line
var greeting = injector.get('greeting');
greeting('Ford Prefect');
var injector = angular.injector();

在这里试试。 FIDDLE

【讨论】:

  • 看来 angular.injector(['myDI']) 也可以正常工作,不需要'ng'
  • @jason 很高兴知道。我没试过。但关键是要确保从保存模块中获取提供程序。
  • 这停止在 Angular 1.3.X github.com/angular/angular.js/issues/9692 中工作
  • 如果我切换依赖项的顺序似乎可以工作:['ng', 'myDI']
猜你喜欢
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多