2014-10-09 118 views
0

我将$ http请求放入服务中。但是,它应根据用户输入的表单检索数据。 url属性定义了baseUrl,params属性定义了flexibel URL。你可以看到,params被定义为固定为'a','b','c','d'。但我希望它可以根据用户的输入灵活性。我将如何做到这一点?

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

+0

只需将包含params的对象传递给您的$ http调用即可。 – 2014-10-09 08:47:03

+0

你的意思是,我应该传入一个从控制器(存储用户输入的地方)获得的对象?我会怎么做? – Dribel 2014-10-09 09:00:09

+0

只是传递'$ scope.yourModelWithUserInput'作为参数到服务,然后使用参数作为参数 – maurycy 2014-10-09 09:01:48

回答

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 
    }) 
+0

完美地工作!非常感谢!!! – Dribel 2014-10-10 10:21:01