2015-05-05 2 views
4

У меня есть угловой фильтр настроить, который прекрасно работает:AngularJS набора вар: HTTP GET

categorieFilter = angular.module("categorieFilter", []) 
categorieFilter.controller("catFilter", ["$scope", "store", function($scope, store){ 
    $scope.search = ""; 
    $scope.products = []; 
    $scope.categories = []; 

    $scope.categories = store.getCategories(); 
    $scope.products = store.getProducts(); 

    $scope.filterProductsByCats = function(category){ 
     $scope.search = category; 
    }; 
}]) 
categorieFilter.factory('store', function(){ 
      var categories = ['Lattes','CC Blend','Frappes']; 
      var products = [ 
       {name: 'Latte machiatto',category: 'Lattes'}, 
       {name: 'Frappe ice',category: 'Frappes'}, 
       {name: 'Latte caramel',category: 'Lattes'}, 
       {name: 'Frappe speculoos',category: 'Frappes'}, 
       {name: 'Cappucino',category: 'CC Blend'}, 
       {name: 'Filter coffee',category: 'CC Blend'}, 
      ]; 
      return { 
       getCategories : function(){ 
        return categories; 
       }, 
       getProducts : function(){ 
        return products; 
       } 
      }; 
     }); 

Но категория вара и вар продукты по-прежнему жестко закодированы, поэтому я хочу, чтобы извлечь необходимые данные из моего сервера заполните эти переменные. И я не могу понять это правильно? У меня есть другая функция, где я могу получить требуемые данные, но я не знаю, как я могу получить эти 2 в 1 ...?

categories = angular.module('categories', []); 
categories.controller("category",function($scope, $http){ 
    var serviceBase = 'api/'; 
    $http.get(serviceBase + 'categories').then(function (results) { 
     $scope.categories = results.data; 
     for(var i = 0; i < $scope.categories.length; i++){ 
      var categories = $scope.categories[i]; 
     } 
}); 
}); 

Так как я могу правильно установить категории Var в требуемом $ http.get в моих данных извлечь сервера в указанный выше фильтр?

ответ

2

Я думаю, что вы должны быть в состоянии избавиться от жесткого кодированного блока в обслуживании и просто вернуться:

return { 
    getCategories: $http.get('/categories').success(function (data) { 
     return data; 
    }), 

    getProducts: $http.get('/products').success(function (data) { 
     return data; 
    }) 
} 

Убедитесь зависимости настроены правильно для службы, хотя (т.е. $http):

.factory('store', function ($http) { 
    // The above return block here 
}); 

И это должно сделать трюк!

+0

Что вы подразумеваете под моими зависимостями, правильно настроены для обслуживания? Я получаю сообщение об ошибке: ReferenceError: $ http не определен. Но я думаю, что это связано с этими зависимостями? – Sesamzaad

+0

Вы получаете эту ошибку, потому что вы не ввели зависимость '$ http'. См. Редактирование выше, где я добавляю '$ http' в качестве аргумента функции определения фабрики. – ninty9notout

+0

Да, что решил этот, но теперь я получаю: Ошибка: [$ http: badreq] Конфигурация запроса Http должна быть объектом. Поступило в редакцию: function (response) – Sesamzaad

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