0

私のプロジェクトでは、Angular サービスを異なるファイルに分割しました。各ファイル/サービスは、「com.mysite.services」という名前の共通モジュールに属している必要があります。次に例を示します。

  • ServiceA.js
  • ServiceB.js
  • ServiceC.js

...等々

ただし、次のように定義することにより:

angular.module('com.mysite.services', []).
    service('ServiceA', function()
    {
    });

各ファイルのモジュールを上書きします。この問題を解決するために、定義されていない場合はモジュールを作成し、定義されている場合はモジュールへの参照を返すラッパー関数を定義しました。

function angular_module(name, deps)
{
   var m;
   try
   {
     m = angular.module(name);
   }
   catch (e)
   {
     m = angular.module(name, deps || []);
   }
   return m;
};

したがって、「。」を簡単に置き換えることができます。宣言に「_」を使用:

angular_module('com.mysite.services', []).
        service('ServiceA', function()
        {
        });

これで問題は解決しましたが、私の質問は、Angular っぽいソリューションを優先してラッパーを回避する方法はありますか? (それはとてもばかげているようです:P)

4

2 に答える 2

2

これが必要かどうかはわかりませんが、そのようなことができます

専用ファイルでこれを作成します:

// Bootstrap.js
angular.module('com.mysite.services', ['com.mysite.services.ServiceA', 'com.mysite.services.ServiceB', ....]);

そして今、すべてのサービスに対して次のようなことができます

// ServiceA.js
angular.module('com.mysite.services.ServiceA', []).
   service('ServiceA', function(){});

//ServiceB.js
angular.module('com.mysite.services.ServiceB', []).
   service('ServiceB', function(){});

アプリで「com.mysite.services」に依存できるようになり、すべてのサービスにアクセスできるようになります。

于 2013-09-06T11:42:12.020 に答える
0

App.js を作成できます

var myModule = angular.module('com.mysite.services', []);

そして ServiceA.js で:

myModule.service('ServiceA', function()
    {
    });
于 2013-09-06T11:52:51.677 に答える