我想以与制作控制器相同的方式制作工厂,方法是拥有一个可以执行多项操作的工厂对象列表。在 EX1(见下面的代码)中,我想定义多个工厂并将它们全部存储在一个“工厂”对象中,并将该“工厂”对象列表传递给我的控制器。与我在 EX2 中执行此操作的方式相同,我定义了一个“控制器”对象,该对象包含我的控制器并将其传递到我的 demoApp.controllers。当我尝试做我在下面发布的内容时,我得到这个:错误:[$injector:unpr ] http://errors.angularjs.org/1.3.14/$injector/unpr?p0=factoriesProvider%20%3C-% 20个工厂%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);