我将$ 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等。但是,在这种情况下,我不知道如何做。有什么建议?干杯
答案 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
})