在Angular中的$ http GET请求中使用params

时间:2014-10-09 08:44:37

标签: angularjs http service get params

我将$ http请求放入服务中。但是,它应该根据用户输入表单来检索数据。 url属性定义baseUrl,params属性定义flexibel URL。

angular.module('mean.system').service('flightReq',function($http,$location){
    var baseUrl='/system/views/airfareData.json';
    var method='GET';
    var Request={};
    this.flightReq=function(){
        $http({
            method:method,
            url:baseUrl,
            headers:{'Content-Type': 'application/x-www-form-urlencoded'},
            params: {'dep':'a', 'arr':'b','number':'c', 'date1':'d'},
            cache:true
        })
        .success(function(data,status){
            console.log(data);
            console.log(status);
            $location.path('/resultpresentation/example');
            Request=data;
        })
        .error(function(data){
            console.log(data||"Request failed");
            $location.path('/');
        });

        };
    this.getRequest=function(){
        return Request
    };
});

正如您所看到的,params定义为' a'''''' d' d' d。但我希望它是flexibel,具体取决于用户的输入。我该怎么做?

如果$ http请求是控制器而不是服务,我可以简单地执行$ scope.dep等。但是,在这种情况下,我不知道如何做。有什么建议?干杯

1 个答案:

答案 0 :(得分:0)

将您的服务注入您的控制器:

.controller('someNameCtrl', ['$scope', 'flightReq', function($scope, flightReq) {

}

然后从控制器中,您将范围作为参数传递给服务

.controller('someNameCtrl', ['$scope', 'flightReq', function($scope, flightReq) {
 ...
    flightReq.flightReq($scope.formData.dep,$scope.formData.arr,$scope.formaData.number,$scope.formData.date1);
 ... 
}

您的服务将采用这些参数并将其用作参数:

angular.module('mean.system').service('flightReq',function($http,$location){
   var baseUrl='/system/views/airfareData.json';
   var method='GET';
   var Request={};
   this.flightReq=function(dep,arr,number,date1){
    $http({
        method:method,
        url:baseUrl,
        headers:{'Content-Type': 'application/x-www-form-urlencoded'},
        params: {'dep': dep, 'arr': arr,'number': number, 'date1': date1},
        cache:true
    })