Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS提供程序函数_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS提供程序函数

Javascript AngularJS提供程序函数,javascript,angularjs,Javascript,Angularjs,实际上,我正在查看injector.js的provider函数,似乎所有的服务[常量、值、工厂、服务和提供者本身]都只是提供者的包装 谁能帮助我理解这些问题: 为什么所有这些都是提供者的包装器?假设我有一个名为“Shane”的factory/service”,为什么我要将它传递给提供者来创建“Shane”对象 那么为什么会有提供商/服务 工厂、服务和其他服务对于提供者来说是非常有用的包装。提供程序要求编写这么多代码: function provider(name, provider_) {

实际上,我正在查看injector.js的
provider
函数,似乎所有的服务[
常量、值、工厂、服务和提供者本身
]都只是提供者的包装

谁能帮助我理解这些问题:

  • 为什么所有这些都是
    提供者的
    包装器
    ?假设我有一个名为“
    Shane
    ”的
    factory/service
    ”,为什么我要将它传递给
    提供者来创建“
    Shane
    ”对象
  • 那么为什么会有
    提供商/服务

  • 工厂、服务和其他服务对于提供者来说是非常有用的包装。提供程序要求编写这么多代码:

    function provider(name, provider_) {
      assertNotHasOwnProperty(name, 'service');
      if (isFunction(provider_) || isArray(provider_)) {
        provider_ = providerInjector.instantiate(provider_);
      }
      if (!provider_.$get) {
        throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
      }
      return providerCache[name + providerSuffix] = provider_;
    }
    
    这就是提供者的工作方式:

  • 首先,提供者可以通过调用上面示例中的方法相互交互
  • 然后从所有提供者调用所有
    $get
    方法。此函数接受其他服务作为参数,因此您可以在这里与某些服务交互
  • $get
    方法的结果是您的服务的实际价值,它可以注入到其他服务、控制器等中
  • 如果您的服务不需要所有这些功能,您可以跳过一些最初的步骤,从任何进一步开始。如果您不需要与提供商合作,请使用
    factory
    。如果您甚至不需要使用服务,请使用
    服务
    (这与js构造函数的正常功能相同)或
    值(如果您的服务实际上是静态值且不需要额外准备)


    请查看文档,了解所有这些注册函数的确切API。

    我被打动了,你能帮我回答这个问题吗。。。我太糊涂了。这个问题太宽,无法给出答案,而不是已经给出了答案。试着用另一个词问[服务/工厂/装饰商/供应商]这些是供应商而不是服务?。服务是我们使用这些提供商创建的服务吗?对吧?这取决于你注入实体的阶段。将向
    .config
    .provider
    中注入提供程序。工厂、指令或其他东西会将服务引入inject。此外,在angular文档中也可以找到。它的底部有一个很好的比较表
     angular.module('app', []).provider('myProvider', function(/*here you can inject another providers*/) {
         // this function can be called by another providers
         this.config = function() {}; 
         this.$get = function(/*here you can inject services*/) {
              // exprort your service value
              return {};
         };
     });