如何从Angular.js中的另一个模块调用模块工厂?

Vic*_*tor 9 requirejs angularjs

我在另一个模块的一个模块中调用工厂时遇到问题.我正在使用angular.js + require.js.这是我的代码模块1:

define(['angular', 'app/admin/app.admin', 'app/admin/account/services'], function (angular, app, services) {
  app.controller('MainCtrl', ['$scope', 'providerService', function ($scope, providerService) {
    $scope.showMe = false;
    $scope.provider = providerService.Providers;
  }]);


  return app;
});
Run Code Online (Sandbox Code Playgroud)

第2单元

define(['angular', 'app/admin/config/index'], function (angular) {
  'use strict';

  var service = angular.module('app.admin.account.services', []);

  service.factory('providerService', ['app.admin.config',
    function (config) {
      var providers = [
        { name: 'google+', url: config.AUTH_URL + '/google' },
        { name: 'facebook', url: config.AUTH_URL + '/facebook' }
      ];
      return {
        Providers: providers
      };
    }
  ]);

  return service;
});
Run Code Online (Sandbox Code Playgroud)

当我尝试从模块1调用模块2中的providerService时,我收到一个错误,说ProviderService不存在.谁能告诉我这里做错了什么?

干杯

Bre*_*tin 16

将RequireJS和AngularJS结合使用是完全可以的,但是术语"模块"在两者之间有不同的含义,并且在涉及依赖时有点令人困惑.

在RequireJS中,"模块"是封装一段代码的典型Javascript文件.您可以使用RequireJS定义依赖项,以便将其他模块作为依赖项传入/周围,并确保正确的脚本加载顺序.

在AngularJS中,术语"模块"具体是指AngularJS"模块",它是许多控制器/服务/指令等声明的容器.

您可以使用RequireJS来定义脚本文件的顺序和依赖关系.然后,您还需要告诉Angular您的模块所依赖的"Angular模块",实质上是导入所有控制器/服务/指令.

在' app/admin/app.admin '中,确保通过将' app.admin.account.services '模块作为第二个参数传递来定义AngularJS模块的依赖项,例如

var app = angular.module('app.admin', ['app.admin.account.services']);
Run Code Online (Sandbox Code Playgroud)

然后,将' app.admin.account.services '模块导入到您的主模块中,使您providerService可以进行依赖注入.