Javascript 为什么可以';t AngularJS解决此依赖关系

Javascript 为什么可以';t AngularJS解决此依赖关系,javascript,angularjs,dependency-injection,Javascript,Angularjs,Dependency Injection,MyApp.js: 'use strict'; angular.module('MyApp', [ 'ngRoute', 'MyApp.components.hello', 'MyApp.pages.index', 'MyApp.pages.upload' ]). config(['$routeProvider', 'HelloService', function($routeProvider, HelloService) { $routeProvid

MyApp.js:

'use strict';

angular.module('MyApp', [
    'ngRoute',
    'MyApp.components.hello',
    'MyApp.pages.index',
    'MyApp.pages.upload'
]).

config(['$routeProvider', 'HelloService', function($routeProvider, HelloService) {
    $routeProvider.
    when('/',
    {
        templateUrl: 'pages/index/index.html',
        controller: 'IndexController'
    }).
    when('/upload',
    {
        templateUrl: 'pages/upload/upload.html',
        controller: 'UploadController' 
    }).
    otherwise({redirectTo: '/'});

    HelloService.init({
        facebook : ID_HERE
    });
}]);
hello-service.js:

'use strict';

angular.module("MyApp.components.hello", []).

factory("HelloService", function()
{
    return window.hello; //assume hello has been loaded
});

当我尝试运行它时,我得到了错误
错误:[$injector:unpr]未知提供程序:HelloService
。为什么?HelloService在MyApp.components.hello中有明确定义,它作为主应用程序的依赖项包含。那么为什么它找不到HelloService呢?

我认为您无法将服务注入配置块

配置块-在提供程序注册期间执行 和配置阶段。只能注入提供程序和常量 进入配置块。这是为了防止意外实例化 在完全配置服务之前,服务的数量


我认为您不能将服务注入配置块

配置块-在提供程序注册期间执行 和配置阶段。只能注入提供程序和常量 进入配置块。这是为了防止意外实例化 在完全配置服务之前,服务的数量


我认为您不能将服务注入配置块

配置块-在提供程序注册期间执行 和配置阶段。只能注入提供程序和常量 进入配置块。这是为了防止意外实例化 在完全配置服务之前,服务的数量


我认为您不能将服务注入配置块

配置块-在提供程序注册期间执行 和配置阶段。只能注入提供程序和常量 进入配置块。这是为了防止意外实例化 在完全配置服务之前,服务的数量

检查这篇文章:

约塞波特 这一节呢

您可能想知道,如果工厂、值等更简单,为什么有人会费心用provide方法建立一个成熟的提供者。答案是提供者允许大量的配置。我们已经提到,当您通过提供者(或Angular提供的任何快捷方式)创建服务时,您将创建一个新的提供者,该提供者定义了服务的构造方式。我没有提到的是,这些提供者可以被注入到应用程序的配置部分,这样您就可以与它们交互了

首先,Angular分两个阶段运行应用程序——配置和运行阶段。正如我们所看到的,配置阶段是您可以根据需要设置任何提供者的地方。这也是设置指令、控制器、过滤器等的地方。正如您可能猜到的,运行阶段实际上是Angular编译DOM并启动应用程序的阶段

那么,问题在哪里

  • 我们可以要求将
    提供者
    注入
    .config()
  • 但是-它们在
    .config()
    中使用,只是要配置,而不是要使用
检查这篇文章:

约塞波特 这一节呢

您可能想知道,如果工厂、值等更简单,为什么有人会费心用provide方法建立一个成熟的提供者。答案是提供者允许大量的配置。我们已经提到,当您通过提供者(或Angular提供的任何快捷方式)创建服务时,您将创建一个新的提供者,该提供者定义了服务的构造方式。我没有提到的是,这些提供者可以被注入到应用程序的配置部分,这样您就可以与它们交互了

首先,Angular分两个阶段运行应用程序——配置和运行阶段。正如我们所看到的,配置阶段是您可以根据需要设置任何提供者的地方。这也是设置指令、控制器、过滤器等的地方。正如您可能猜到的,运行阶段实际上是Angular编译DOM并启动应用程序的阶段

那么,问题在哪里

  • 我们可以要求将
    提供者
    注入
    .config()
  • 但是-它们在
    .config()
    中使用,只是要配置,而不是要使用
检查这篇文章:

约塞波特 这一节呢

您可能想知道,如果工厂、值等更简单,为什么有人会费心用provide方法建立一个成熟的提供者。答案是提供者允许大量的配置。我们已经提到,当您通过提供者(或Angular提供的任何快捷方式)创建服务时,您将创建一个新的提供者,该提供者定义了服务的构造方式。我没有提到的是,这些提供者可以被注入到应用程序的配置部分,这样您就可以与它们交互了

首先,Angular分两个阶段运行应用程序——配置和运行阶段。正如我们所看到的,配置阶段是您可以根据需要设置任何提供者的地方。这也是设置指令、控制器、过滤器等的地方。正如您可能猜到的,运行阶段实际上是Angular编译DOM并启动应用程序的阶段

那么,问题在哪里

  • 我们可以要求将
    提供者
    注入
    .config()
  • 但是-它们在
    .config()
    中使用,只是要配置,而不是要使用
检查这篇文章:

约塞波特 这一节呢

您可能想知道,如果工厂、值等更简单,为什么有人会费心用provide方法建立一个成熟的提供者。答案是提供者允许大量的配置。我们已经提到,当您通过提供者(或Angular提供的任何快捷方式)创建服务时,您将创建一个新的提供者,该提供者定义了服务的构造方式。我没有提到的是,这些提供者可以被注入到应用程序的配置部分,这样您就可以与它们交互了

首先,Angular以两阶段运行应用程序
.run(['HelloService', function(HelloService) {
    HelloService.init({
        facebook : ID_HERE
    });
}])