Несколько фабрик AngularJS в одном объекте «фабрики»

Я хочу создать фабрику так же, как я делаю контроллер, имея список фабричных объектов, которые делают несколько вещей. в EX1 (см. код ниже) я хочу определить несколько фабрик и сохранить их все в одном объекте «фабрики» и передать этот список объектов «фабрик» в мои контроллеры. Точно так же, как я делаю это в EX2, я определяю объект «контроллеры», который содержит мои контроллеры, и передаю его в мой demoApp.controllers. Когда я пытаюсь сделать то, что я разместил ниже, я получаю следующее: Ошибка: [$injector:unpr] http://errors.angularjs.org/1.3.14/$injector/unpr?p0=factoriesProvider%20%3C-%20factories%20%3C-%20SimpleController

и я не уверен, почему. Пожалуйста помоги! Я дам вам очки Брауни.

Если есть способ сделать это, я действительно мог бы отделить свой код, имея файл «factories.js», в котором будут храниться все мои фабрики, другой файл, файл «controllers.js», в котором хранятся все мои контроллеры, и т. д. Это сильно бы упростил мой код.

EX1:

var factories = {};
factories.simpleFactory = function($http){
   var customers = [
      {name: "John Smith", city: "Phoenix"},
      {name: "John Doe", city: "New York"},
      {name: "Jane Doe", city: "San Francisco"}
    ];
   var factory = {};
   factory.getCustomers = function(){
      return customers;
    };

  return factory;
}
factories.notSimpleFactory= function($http){
   var someVariable = [1,2,3,4];
   var factory2 = {};
   factoryTwo.getSomeVariable() = function(){
       return someVariable;
   }
   return factory2;
}
demoApp.factory(factories);

EX2

var controllers = {};

controllers.SimpleController = function($scope,factories)
{
  $scope.customers= {}
  $scope.factory2Var = {}
  init();
  function init(){
    $scope.customers = factories.simpleFactories.getCustomers();
  }
  callNotSimpleFactory()
  function callNotSimpleFactory(){
       $scope.factory2Var = factories.notSimpleFactory.getSomeVariable(); 
  } 
   $scope.addCustomer= function(){
$scope.customers.push({name: $scope.newCustomer.name, city: $scope.newCustomer.city});
}};
demoApp.controller(controllers);

person user3486758    schedule 18.11.2015    source источник


Ответы (1)


Используйте это в конце для контроллеров, таких как bleow, и то же самое для заводов.

for (var prop in controllers) {
    demoApp.controller(prop, controllers[prop]);
}
person hvojdani    schedule 18.11.2015
comment
Но не, видимо, ответ - person Mawg says reinstate Monica; 16.10.2017