1

だから私はメインモジュールを次のappように定義しています

app = angular.module("app", ['app.social_accounts', 'restmod'])

restmodモジュールが構成されています。

app.config(function(restmodProvider) {
    restmodProvider.rebase({
    $config: {
        primaryKey: "id",
        style: "ams",
        urlPrefix: "/app/"
    }
  });
});

そしてそれは期待通りに動作します: リクエストはに送信されましたhttp://localhost:8000/app/...

restmod今、サブモジュールapp.social_accountsで使用したい

app = angular.module("app.social_accounts", ['restmod'])

app.config(function(restmodProvider) {
    restmodProvider.rebase({
    $config: {
        primaryKey: "id",
        style: "ams",
        urlPrefix: "https://graph.facebook.com/"
    }
  });
});
app.factory("Album", ["restmod", function(restmod){
    Album = restmod.model("/me/albums/")
    return {
        "get": function(){Album.$search()}
    }
}])

urlつまり、サブモジュールで絶対を使用したいapp.social_accounts

しかし、私がAlbum(下に登録されapp.social_accountsた) を下に注入するcontroller DashboardCtrlapp、リクエストはに送信されましたhttp://localhost:8000/app/me/albums/

だから私はここで何が起こっているのだろうか、そしてどのように下で別のものを達成するのだろurlrestmodapp.social_accounts?

4

1 に答える 1

2

で定義された構成は、それが使用されているモジュールに関係なくrestmodProviderグローバルですrestmod。したがって、上記の例urlPrefixでは、モジュールで定義されたものがapp.social_accountsモジュール内の構成によって上書きされていappます。

期待どおりの動作を実現するために、モデルごとに構成をオーバーライドできます。

angular.module('app.social_accounts', ['restmod'])

  .factory('Album', function(restmod) {
     var Album = restmod.model('/me/albums')
       .mix({
         $config: {
           urlPrefix: 'https://graph.facebook.com/'
         }
       });
   });

モジュール内の複数のモデルで構成が必要な場合は、ミックスインを使用して DRY に保つことができます。

.factory('restmodConfigSocial', function(restmod) {
  return restmod.mixin({
    $config: {
      urlPrefix: 'https://graph.facebook.com/'
    }
  });
})

.factory('Album', function(restmod) {
  var Album = restmod.model('/me/albums').mix('restmodConfigSocial');
});
于 2015-01-04T03:55:21.477 に答える