2015-05-21 81 views
0

我想在angularjs中使用工厂,但它在页面上什么也没有显示,控制台上没有显示任何错误。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; 

}); 
+0

我如何测试型动物路线成plunker?其实你的是空的。路由不是在做他的工作。 – Okazari

回答

1

我看到的第一个问题是您正在为每个控制器和工厂创建一个新模块。这应该位于同一模块下。要做到这一点,例如,customerController应该用简单的app.controller('customerController'....)和工厂app.factory('customersFactory'...)

的第二个问题是,你正在试图注入$scope进入工厂,你不能这样做实例化。看到这个更新的运算器http://plnkr.co/edit/0N47C3yFq58H5AyCoh5a?p=preview

我知道能够在一个应用程序中使用多个模块,但对于你在做什么,这是没有必要的。如果您必须,您已经定义了var app两次。一旦app.js,另一个在customersFactory.js

启动customersFactory喜欢的东西下面,它会工作

var fac = angular.module('customersFactory',[]); 
fac.factory('customersFactory',function(){ 
    ... 
}); 
+0

谢谢。但是当我按照你所说的去做。查看订单不起作用。 – adi

+0

已更新plnkr:http://plnkr.co/edit/vxB2pRim7USwfXPL4lVA?p=preview – adi

+0

它有什么问题呢? – Ronnie