2015-05-21 3 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

updated plnkr: http://plnkr.co/edit/vxB2pRim7USwfXPL4lVA?p=preview – adi

+0

что в этом плохого? – Ronnie

Смежные вопросы