Angularjs 的工厂不工作

Factory in Angularjs not working

我正在尝试使用 angularjs 中的工厂,但它在页面上没有显示任何内容,控制台上也没有显示任何错误。

谁能指出我犯的错误?

Here is plnkr link.

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(){
  ...
});