无法从angularJS控制器调用服务

时间:2015-03-30 16:06:37

标签: angularjs

我已经定义了1个服务来获取类别和控制器来调用服务。

var req = {
    method: 'POST',
    url: 'http://localhost/cgi-bin/superCategory.pl',
    headers: { 'Content-Type': undefined },
    data: { action: 'GET' }
};


sampleApp.factory('SuperCategoryService', ['$http', function ($http){
    return {
        GetSuperCategories: function () {
            return $http(req)
                .then(
                function(response) 
                {
                    if (typeof response.data === 'object') 
                    {
                        alert ('right');
                        //return response.data;
                    } 
                    else 
                    {
                        alert ('wrong');
                        // invalid response
                        //return $q.reject(response.data);
                    }

                }, 
                function(response) {
                    alert ('again worng');
                    // something went wrong
                    //return $q.reject(response.data);
                });
            }
        };
}]);


sampleApp.controller('SuperCategoryController', ['$scope', 'SuperCategoryService', function ($scope, SuperCategoryService){

    $scope.SuperCategories = function() {

        SuperCategoryService.GetSuperCategories()
            .then(function(d) {
                alert (d);
                if (d != undefined) {
                    alert ('in');
                    // Your data should be loaded here
                    console.log(d.data);
                    alert (d);
                    $scope.SuperCategories = d.data;
                }
                else
                {
                    alert ('Here');
                }
            })
            .error(function(data, status) {
                // Errors here
            });
    }

}]);

即使我在控制器中调用该服务,但它没有达到服务中的任何警报。 (甚至不是错误的情况)

可能是什么问题?任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

请参阅此$http文档。您在调用$http方法时遇到了错误。

sampleApp.factory('SuperCategoryService', ['$http', function ($http){
    return {
        GetSuperCategories: function () {
            return $http.post('http://localhost/cgi-bin/superCategory.pl',{ action: 'GET' });                                   
        };
}]);

答案 1 :(得分:0)

请在此处查看演示http://jsbin.com/tahigerube/1/edit

你需要调用你的$ scope.SuperCategories来执行它

...
   $scope.SuperCategories();
...