0

この基本プロバイダーがあるとします。

angular.module('app').provider('BaseClient', function () {
    this.setSomething = function (something) {
        // Store `something` somewhere
        return this;
    };
});

そして今、これらの 2 つの他のサブプロバイダー:

angular.module('app').provider('ClientA', function () {
    this.$get = function () {
        return {
            foo: function () {
                console.log('FOO', /* Read `something`, needs to output 'aaa' */);
            }
        }
    };
});

angular.module('app').provider('ClientB', function () {
    this.$get = function () {
        return {
            bar: function () {
                console.log('BAR', /* Read `something`, needs to output 'bbb' */);
            }
        }
    };
});

angular.module('app').config(function (clientAProvider, clientBProvider) {
    clientAProvider.setSomething('aaa');
    clientBProvider.setSomething('bbb');
});

同じ実装を使用しながら、プロバイダーごとにその値を呼び出して保存できるように、プロバイダーセクションを作成ClientAおよびClientB継承するにはどうすればよいですか?BaseClientclientAProvider.setSomething('aaa')clientBProvider.setSomething('bbb')setSomething

これらのプロバイダー (これら 2 つ以上) がたくさんありますが、プロバイダー セクションは常に同じで、構成の実装は常に同じですが、これらのプロバイダーのファクトリ セクションは異なります。

考え?

4

1 に答える 1

1

プロバイダーに注入できBaseClientProviderます。ClientA

完全なコードはこちらplkr


app.provider('BaseClient', function() {
  this.config = {
    something: null
  };

  this.setSomething = function(something) {
    this.config.something = something;
    return this;
  };

  this.$get = function() {};
});

app.provider('ClientA', ['BaseClientProvider', function(BaseClientProvider) {
  var self = this;
  angular.extend(self, BaseClientProvider);
  self.$get = function() {
    return {
      foo: function() {
        console.log('FOO', self.config.something);
      }
    }
  };
}]);
于 2015-06-18T17:26:42.903 に答える