用例是我有一个需要根据用户输入配置的自定义服务。
所以我为该服务创建了一个服务提供程序,但现在我只能在module.config调用中配置提供程序,我认为它在应用程序的生命周期内只加载了一次。
对此有何解决方案?
答案 0 :(得分:0)
让您的服务提供某种配置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.
}
请记住,服务基本上是对象,您可以根据需要根据设计对其进行操作。所以这些可能不是实现目标的唯一,甚至是最好的方法。你在这里有足够的灵活性。
答案 1 :(得分:0)
我不认为服务提供商是您在这里寻找的,因为它正是您所描述的。
正如克里斯所说,角度服务是单身人士。但是,如果您希望您的服务输出"实例"根据用户输入,我喜欢以下方法。
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);
}
}
}]);
我还没有想过能够像Chris建议的那样操纵配置变量。我认为它不适用于我的示例,但您可以将数据绑定到$scope.newInstance