http的自定义服务不起作用

custom service for http not working

本文关键字:不起作用 服务 自定义 http      更新时间:2023-09-26

我定义了一个自定义服务,用于发出$http请求,如下所示:

app.factory("ajaxCall",["$http",'$q',function($http,$q){    
return {
        getData : function(url){
            var deferred = $q.defer();
            $http.get(url).then(function(data)
            {
                deferred.resolve(data);
            })
        return deferred.promise;
        }
    }
}]);

我使用这项服务在我的决心像:

    resolve:{
                tableData: function(ajaxCall){
                 return {
                  ajaxCall.getData({/* A Url */}); //line a
                 } 
                } 
            }

但它给了我一个错误:a行出现意外标识符。我做错了什么?

$http.get(url)希望url是字符串,但您正试图将该字符串包装在{}

此外,resolve语法不正确。

尝试

resolve: {
   tableData: function(ajaxCall) {
     return ajaxCall.getData( /* A Url */ ); 
   }
 }

此外,您在工厂中使用了一个promise反模式,可以简化为:

app.factory("ajaxCall", ["$http", '$q',
  function($http, $q) {
    return {
      getData: function(url) {
        return $http.get(url).then(function(response) {
          return response.data;
        });    
      };
    }
  }
]);

确保您编写了有效的javascript(您有太多的大括号):

resolve: {
    tableData: function(ajaxCall) {
        return ajaxCall.getData('http://....');
    } 
}

U可以使用app.factory或app.service。例如:

app.factory('service', ['$http', function ($http) {       
    return {
        save: function (data) {
            return $http({
                url: 'your url is here',
                method: 'POST',
                data: data
            })
        },
     };
}]);

然后在角度控制器中:

 $scope.addButtonClick = function () {
            var info = {};
            info ["Id"] = $scope.Id;                
            info ["name"] = $scope.name;
            info ["pwd"] = $scope.pwd;
            service.save(info )
            .success(function (data) {
                $scope.reset();
            })
            .error(function (xhr) {
                $ngBootbox.alert('Error in saving data');
            });
        }
    }