为什么我的angularjs服务未定义?

时间:2015-08-22 02:04:35

标签: angularjs

我在角度控制器中使用服务,如下所示: 我的服务:

MyServices.factory('Product', ['$http',function($http){

    this.fn = function(city, state, category, categoryDetailValue) {
        return $http.get('serverURL',{params: {city:city, state:state, category:category, categoryDetailValue:categoryDetailValue}}
        ).then(function(results){
            return results.data;
        });
    };      
}]);

我的控制器:

$scope.init = function () {
    console.log(Product);   
    Product.fn($rootScope.city, $rootScope.name, 'param1', 'param2').then(function(results) {
        // Do something with results
        $scope.items = results.Transactions;
    });

};

当我尝试在控制器内调用服务时,错误显示“产品未定义”;请纠正我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

使用MyServices.service('Product',...代替MyServices.factory('Product',

我认为这是因为工厂应该是一个返回和反对的函数,而不是使用new来调用它,所以this不是你想象的那样。

如果你想使用工厂,那就是这样的:

MyServices.factory('Product', ['$http',function($http){
    return {
        fn : function(city, state, category, categoryDetailValue) {
            return $http.get('serverURL', {
                        params: {
                            city:city, 
                            state:state, 
                            category:category, 
                            categoryDetailValue:categoryDetailValue
                        }
            }).then(function(results){
                return results.data;
            });
        }
    };
}]);