Angularjs 的工厂不工作
Factory in Angularjs not working
我正在尝试使用 angularjs 中的工厂,但它在页面上没有显示任何内容,控制台上也没有显示任何错误。
谁能指出我犯的错误?
var app = angular.module('myApp',[]);
app.factory('customersFactory',function($scope){
var customers = [{
id:1,
name: 'James',
city: 'Seattle',
orderTotal: 9.546,
joined: '2012-02-05',
orders:[{
id:1,
product:'Shoes',
total:9.9665
}]
}, {
id:2,
name: 'Sarah',
city: 'Dallas',
orderTotal: 3.653,
joined: '2010-08-07',
orders:[{
id:2,
product:'Sandal',
total:8.3465
}]
}, {
id:3,
name: 'Tom',
city: 'Troy',
orderTotal: 8.346,
joined: '2011-04-09',
orders:[{
id:3,
product:'Sneakers',
total:6.3427
}]
}, {
id:4,
name: 'Ling',
city: 'Columbus',
orderTotal: 5.549,
joined: '2014-03-10',
orders:[{
id:4,
product:'belt',
total:8.9674
}]
}];
var factory={};
factory.getCustomers = function(){
return customers;
};
factory.getCustomer = function(customerId){
for (var i = 0, len = customers.length; i < len; i++) {
if (customers[i].id === parseInt(customerId)) {
return customers[i];
}
}
return {};
}
return factory;
});
我看到的第一个问题是您正在为每个控制器和工厂创建一个新模块。这应该位于同一模块下。例如,要做到这一点,customerController
应该用一个简单的 app.controller('customerController'....)
和工厂 app.factory('customersFactory'...)
等
实例化
第二个问题是您正试图将 $scope
注入到您无法执行的工厂中。查看这个更新的 plunker http://plnkr.co/edit/0N47C3yFq58H5AyCoh5a?p=preview
我知道可以在一个应用程序中使用多个模块,但对于您正在做的事情来说,这不是必需的。如果必须,您已经定义了 var app
两次。一次在 app.js
一次在 customersFactory.js
将 customersFactory
启动到类似下面的内容,它将起作用
var fac = angular.module('customersFactory',[]);
fac.factory('customersFactory',function(){
...
});
我正在尝试使用 angularjs 中的工厂,但它在页面上没有显示任何内容,控制台上也没有显示任何错误。
谁能指出我犯的错误?
var app = angular.module('myApp',[]);
app.factory('customersFactory',function($scope){
var customers = [{
id:1,
name: 'James',
city: 'Seattle',
orderTotal: 9.546,
joined: '2012-02-05',
orders:[{
id:1,
product:'Shoes',
total:9.9665
}]
}, {
id:2,
name: 'Sarah',
city: 'Dallas',
orderTotal: 3.653,
joined: '2010-08-07',
orders:[{
id:2,
product:'Sandal',
total:8.3465
}]
}, {
id:3,
name: 'Tom',
city: 'Troy',
orderTotal: 8.346,
joined: '2011-04-09',
orders:[{
id:3,
product:'Sneakers',
total:6.3427
}]
}, {
id:4,
name: 'Ling',
city: 'Columbus',
orderTotal: 5.549,
joined: '2014-03-10',
orders:[{
id:4,
product:'belt',
total:8.9674
}]
}];
var factory={};
factory.getCustomers = function(){
return customers;
};
factory.getCustomer = function(customerId){
for (var i = 0, len = customers.length; i < len; i++) {
if (customers[i].id === parseInt(customerId)) {
return customers[i];
}
}
return {};
}
return factory;
});
我看到的第一个问题是您正在为每个控制器和工厂创建一个新模块。这应该位于同一模块下。例如,要做到这一点,customerController
应该用一个简单的 app.controller('customerController'....)
和工厂 app.factory('customersFactory'...)
等
第二个问题是您正试图将 $scope
注入到您无法执行的工厂中。查看这个更新的 plunker http://plnkr.co/edit/0N47C3yFq58H5AyCoh5a?p=preview
我知道可以在一个应用程序中使用多个模块,但对于您正在做的事情来说,这不是必需的。如果必须,您已经定义了 var app
两次。一次在 app.js
一次在 customersFactory.js
将 customersFactory
启动到类似下面的内容,它将起作用
var fac = angular.module('customersFactory',[]);
fac.factory('customersFactory',function(){
...
});