2015-11-18 4 views
0

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

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

Если есть способ сделать это, я мог бы действительно отделить мой код, имея файл «factories.js», в котором будут размещены все мои фабрики, другой файл, файл «controllerlers.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); 

ЕХ2

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); 

ответ

2

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

for (var prop in controllers) { 
    demoApp.controller(prop, controllers[prop]); 
} 
+0

Вы сударь получить все пункты домового и выиграть интернет. – user3486758

+0

Но нет, по-видимому, ответа – Mawg