我搜索和研究但我无法解决我的问题。
我不是那么有棱角的练习,我希望有人可以帮助我!
我为http POST创建了一个服务,我必须从我的控制器中获取结果
CONTROLLER
tantoSvagoApp.controller("ricercaAttivita", function ($scope,
serviceRegioni, serviceRicercaAttivita) {
$scope.regioni = serviceRegioni.get();
var parameters = {
"MasterID": 14,
"NumPart": "",
"Text": "",
"Location": {"Region": "", "Province": ""},
"Attributes": [],
"Price": {"MinPrice": "","MaxPrice": ""},
"ProjectCode": "WS678",
"Pager": {"PageSize": 10,"PageOffset": 1}
};
$scope.elencoAttivita = serviceRicercaAttivita.getAttivita(parameters);
});
SERVICE
tantoSvagoApp.service('serviceRicercaAttivita', function ($http) {
this.getAttivita = function(arr) {
$http({
method: 'POST',
url: 'http://localhost/Tantosvago/api/getAttivita.php',
data: arr
}).then(function successCallback(response) {
var result = response.data;
return result;
}, function (response) {
console.log("Errore " + response.data,response.status);
});
};
}
);
我在UNDEFINED中获得了什么。
答案 0 :(得分:1)
$ http运行异步,所以当你调用你的代码时,只需拨打电话然后继续; 您可以检查它在getAttivita函数中放置一个return语句,如下所示:
this.getAttivita = function(arr) {
$http({
method: 'POST',
url: 'http://localhost/Tantosvago/api/getAttivita.php',
data: arr
}).then(function successCallback(response) {
var result = response.data;
return result;
}, function (response) {
console.log("Errore " + response.data,response.status);
});
};
return "Test";
}
要做你想做的事情,你需要将一个回调函数传递给tour函数,并在这个回调函数中将值赋给$ scope porperty:
在您的控制器中:
function Callback(elencoAttivita) {
$scope.elencoAttivita = elencoAttivita;
}
serviceRicercaAttivita.getAttivita(parameters, Callback);
并在您的服务中:
this.getAttivita = function(arr, Callback) {
$http({
method: 'POST',
url: 'http://localhost/Tantosvago/api/getAttivita.php',
data: arr
}).then(function successCallback(response) {
var result = response.data;
Callback(result);
}, function (response) {
console.log("Errore " + response.data,response.status);
});
};
}
答案 1 :(得分:0)
成功和失败$http.post()
的回调是异步方法,您无法返回任何值。
解决方案如下
<强> CONTROLLER 强>
tantoSvagoApp.controller("ricercaAttivita", function ($scope,
serviceRegioni, serviceRicercaAttivita) {
$scope.regioni = serviceRegioni.get();
var parameters = {
"MasterID": 14,
"NumPart": "",
"Text": "",
"Location": {"Region": "", "Province": ""},
"Attributes": [],
"Price": {"MinPrice": "","MaxPrice": ""},
"ProjectCode": "WS678",
"Pager": {"PageSize": 10,"PageOffset": 1}
};
function successCallBack(result) {
$scope.elencoAttivita = result;
}
serviceRicercaAttivita.getAttivita(parameters, successCallBack);
});
<强>服务强>
tantoSvagoApp.service('serviceRicercaAttivita', function ($http) {
this.getAttivita = function(arr, successCallBack) {
$http({
method: 'POST',
url: 'http://localhost/Tantosvago/api/getAttivita.php',
data: arr
}).then(function successCallback(response) {
successCallBack(response.data);
}, function (response) {
console.log("Errore " + response.data,response.status);
});
};
});