Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS集变量:http get_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS集变量:http get

Javascript AngularJS集变量:http get,javascript,angularjs,Javascript,Angularjs,我安装了一个角度过滤器,效果非常好: categorieFilter = angular.module("categorieFilter", []) categorieFilter.controller("catFilter", ["$scope", "store", function($scope, store){ $scope.search = ""; $scope.products = []; $scope.categories = []; $scope.

我安装了一个角度过滤器,效果非常好:

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;
                }
            };
        }); 
但是var类别和var产品仍然是硬编码的,所以我想从我的服务器检索所需的数据来填充这些变量。而我似乎不能正确地理解这一点?我有另一个功能,我可以得到所需的数据,但我不知道如何才能得到这些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];
        }
});
});
categories=angular.module('categories',[]);
categories.controller(“category”,函数($scope,$http){
var serviceBase='api/';
$http.get(serviceBase+'categories')。然后(函数(结果){
$scope.categories=results.data;
对于(变量i=0;i<$scope.categories.length;i++){
var categories=$scope.categories[i];
}
});
});

那么,如何将var categories正确设置为所需的$http.get以将我的服务器数据检索到上面的筛选器中?

我认为您应该能够摆脱服务中的硬编码块,然后返回:

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

    getProducts: $http.get('/products').success(function (data) {
        return data;
    })
}
请确保已正确设置服务的依赖项(即
$http
):


这应该能奏效

您对“我的依赖项”是什么意思?是否为该服务正确设置了依赖项?我得到一个错误:ReferenceError:$http未定义。但我认为它与这些依赖项有关?您之所以会出现这种错误,是因为您没有注入
$http
依赖项。请参阅上面的编辑,其中我将添加
$http
作为工厂定义函数的参数。是的,解决了这个问题,但现在我得到:错误:[$http:badreq]http请求配置必须是一个对象。收到:功能(响应)哇,这个答案是我那部分的火车失事。我已经更新了答案,以便
$http
使用正确的响应格式。请阅读
$http
更多信息:
.factory('store', function ($http) {
    // The above return block here
});