angularjs使用与具有不同数据的模型相同的服务

时间:2014-01-07 16:13:46

标签: oop angularjs angularjs-service

我正在创建一个factory service,它为我提供了像

这样的功能
var myApp = angular.module('panelServices', ['ngResource']);

myApp.factory('myService', [...]{ 
  function myService(){
    this.list = [];
  }

  myService.prototype.method1: fn() {} ,
  ...
  myService.prototype.methodn: fn() {},

  return myService;
});

我通过 DI myService注入我的controllers并使用new myService()来实例化myService的新实例。

我没有找到另一种方法来做到这一点,我想把service“复制”到例如:anotherService(基于servicesingletons的事实})。 我的目标是让service用于不同的models(他们不共享数据,只有方法) -

请告诉我,如果我没有解释清楚,请提前谢谢。

1 个答案:

答案 0 :(得分:0)

对于多个服务实例,您可以使用$injector.instantiate

myApp.factory('myService', function($injector){ 
  function myService(){
    this.list = [];
  }

  myService.prototype.method1: fn() {} ,
  ...
  myService.prototype.methodn: fn() {},

  return function() {
     return $injector.instantiate(myService);
  };
});

然后在控制器中

myApp.controller('myController', function(myService){ 
      var service = new myService();
//other code
});

在另一个控制器中

myApp.controller('anotherController', function(myService){ 
   var service = new myService();
   //other code
});

new myService()它总是为您提供新实例。见plunker