9

あるモジュールのファクトリを別のモジュールから呼び出すのに問題があります。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;
});

モジュール 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;
});

モジュール 1 からモジュール 2 の providerService を呼び出そうとすると、providerService が存在しないというエラーが表示されました。誰かが私がここで間違ったことを教えてもらえますか?

乾杯

4

1 に答える 1

16

RequireJS と AngularJS を一緒に使用してもまったく問題ありませんが、「モジュール」という用語は 2 つの間で異なる意味を持ち、依存関係に関しては少し混乱します。

RequireJS では、「モジュール」は、コードをカプセル化する典型的な Javascript ファイルです。RequireJS を使用して依存関係を定義し、他のモジュールを依存関係として受け渡し、正しいスクリプトの読み込み順序を確保します。

AngularJS では、「モジュール」という用語は具体的には AngularJS の「モジュール」を意味します。これは、多数のコントローラー/サービス/ディレクティブなどの宣言のコンテナーです。

RequireJS を使用して、スクリプト ファイルの順序と依存関係を定義します。次に、基本的にすべてのコントローラー/サービス/ディレクティブを一緒にインポートして、モジュールが依存する「Angular モジュール」を Angular に伝える必要もあります。

app/admin/app.admin 」では、「 app.admin.account.services」モジュールを 2 番目のパラメーターとして渡すことにより、AngularJS モジュールの依存関係を定義してください。

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

これにより、「app.admin.account.services」モジュールがメイン モジュールにインポートされproviderService、依存性注入が可能になります。

于 2013-05-22T07:11:06.163 に答える