ユースケースは、ユーザー入力に基づいて構成する必要があるカスタム サービスがある場合です。
そのため、そのサービスのサービス プロバイダーを作成しましたが、今では module.config 呼び出し内でのみプロバイダーを構成できます。これは、アプリの有効期間中に 1 回だけ読み込まれると思います。
これに対する解決策はありますか?
ユースケースは、ユーザー入力に基づいて構成する必要があるカスタム サービスがある場合です。
そのため、そのサービスのサービス プロバイダーを作成しましたが、今では module.config 呼び出し内でのみプロバイダーを構成できます。これは、アプリの有効期間中に 1 回だけ読み込まれると思います。
これに対する解決策はありますか?
必要に応じてこれらの構成値を設定するために、サービスに何らかの構成 API を提供してもらいます。簡単な例として、次のようにします。
function myController(myService, $scope) {
$scope.config = myService.config;
// You can manipulate various config options now through direct binding.
}
ただし、AngularJS サービスはシングルトンであることを忘れないでください。つまり、それらはすべて同じ状態を共有します。別の状態が必要な場合、または毎回「新しい」状態が必要な場合は、基本的にファクトリである $resource または $http の動作に似た方法を実行する必要があります。
function myController(myService, $scope) {
$scope.config = { value1: 'default', value2: 'default' };
var thisService = myService($scope.config);
// You can manipulate various config options now through direct binding.
}
サービスは基本的にオブジェクトであり、必要に応じて設計に従って操作できることを覚えておいてください。したがって、これらはおそらく、目標を達成するための唯一の方法ではなく、必ずしも最良の方法でさえありません. ここには完全な柔軟性があります。
サービスのプロバイダーは、まさにあなたが説明しているものであるため、ここで探しているものではないと思います。
Chris が述べたように、angular サービスはシングルトンです。ただし、サービスがユーザー入力に基づいて「インスタンス」を出力するようにしたい場合は、次のアプローチが気に入っています。
function myController(myService, $scope) {
var config = { value1: 'default', value2: 'default' };
$scope.newInstance=myService.create(config);
}
app.service('myService', [function(){
function serviceInstance = function (config){
//take config and return output object
}
return {
create: function(config){
return new serviceInstance(config);
}
}
}]);
クリスが提案したように、構成変数を操作できるとは考えていませんでした。私の例ではうまくいかないと思いますが、$scope.newInstance