Angular JS - 是否可以使用除$ config之外的$ provider创建工厂或服务

时间:2015-12-13 16:22:07

标签: angularjs

我有几个问题

  1. Angular JS - 是否可以使用除$ config之外的$ provider创建工厂或服务

  2. 是否可以使用注入器创建$ Provider实例 i,e angular.injector(['ng'])。get(“$ provider”); - 当我尝试它时抛出错误

  3. 提前致谢

    更新问题以获得更清晰

    实际上我的问题是 - 是否可以通过注入器$提供商创建工厂/服务。我知道工厂,服务和提供商之间的区别。而且我知道我们可以在config()中创建一个工厂,如

    app.config(function($provide){
            $provide.factory('newFac',function(){
                return {
                    newT : 'This is from confing()'
                };
            });
        });
    

    只是想知道是否可以使用$ provide

    创建工厂外部config()

1 个答案:

答案 0 :(得分:0)

  

Angular JS - 是否可以使用除$ config()

之外的$ provider创建工厂或服务

不清楚你在问什么,但让我解释一下。只有提供者可以注入config阶段,没有别的,但提供者/服务/工厂之间的区别并不大,所以基本上你可以写任何工厂,并注入配置,但你必须正确命名,并提供一个名为$get的方法,这样,angular知道哪个对象将工厂暴露给配置。不要错,只有提供商可以注入配置,但你可以写你的工厂,因为它是一个提供商。

这是一个例子。

var app = angular.module('test', []);
//simple service
app.service('service1', function(){
    //some stuff
});
//simple provider
app.provider('service2', function(){
    //some stuff
    this.$get = function(){  //now this provider can be injected into config
        return this; //there are only 2 differences, `app.provider` and `this.$get` method
    }
});

app.config(function(service2Provider){ //notice `Provider` prefix
    //some stuff
});
  

angular.injector([ 'NG'])获得( “$提供商”);

这适用于您的模块,例如,您的提供程序是 TestProvider ,创建此提供程序的模块是 TestModule ,那么您必须使用

angular.injector(['TestModule']).get("TestProvider");

它也适用于服务,常量,值,工厂