如何动态配置angularjs提供程序?

时间:2013-11-05 02:54:52

标签: angularjs

用例是我有一个需要根据用户输入配置的自定义服务。

所以我为该服务创建了一个服务提供程序,但现在我只能在module.config调用中配置提供程序,我认为它在应用程序的生命周期内只加载了一次。

对此有何解决方案?

2 个答案:

答案 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