在我的服务器端(ASP.ne MVC)我有这样的方法:
[HttpGet]
public JsonResult GetTrenings(string treningId)
{
var tempId = Guid.Parse(treningId);
var trening = TreningService.GetTreningById(tempId);
_trenings = TreningService.GetAllTreningsForUser(trening.UserId);
return Json(_trenings, JsonRequestBehavior.AllowGet);
}
我有Angular服务:
publicApp.angularModule.factory('feedSingleTreningService', function ($q, $http) {
return {
getTrenings: function (data) {
var input = $http.get("/Feed/GetTrenings", { params: { treningId: data } });
var deferred = $q.defer();
deferred.resolve(input);
return deferred.promise;
},
};
});
在我的控制器中,我将此服务称为:
feedSingleTreningService.getTrenings(data).then(function(results) {
console.log("test", results);
});
但是在控制台中没有显示任何内容,我调试了服务器端并请求到达它,它返回_trenings,服务返回promise,但没有任何反应。
我终于改变了,在控制台“test”中显示但结果未定义。
为什么会这样?
答案 0 :(得分:5)
您不需要将您的电话推迟到$ http,因为它已经返回了一个承诺。
回来
return $http.get("/Feed/GetTrenings", { params: { treningId: data } });
然后调用你的函数的任何东西都可以:
getTrenings(myData).then(function(data) { do something }).fail(function() { error });