我不明白为什么“结果”是一个已解决的承诺而不是实际值:
searchService.getLink(vm.queryObject).then(function (result) {
console.log(result);
});
getLink()
的代码如下:
function getLink(query) {
return $resource(uriService.searchLink).save(query).$promise;
}
我正在其他地方做一些非常相似的事情,而是在then()
回调中得到了值。我错过了什么?
更新我错了,“结果”是一个有承诺的Resource对象。但问题仍然存在,为什么承诺的价值不会传递给回调?
答案 0 :(得分:0)
我发现这是因为我是如何从服务器返回数据的。我只想从服务器返回一个id,所以我试着这样做:
[HttpPost]
[Route("search/link")]
public int Link(SearchCriteria searchCriteria)
{
return _searchService.Save(searchCriteria);
}
但是$ resource必须要求从服务器返回一个对象,所以我将我的返回类型修改为一个对象,然后该值开始显示为该对象的属性。
[HttpPost]
[Route("search/link")]
public GenericModel<int> Link(SearchCriteria searchCriteria)
{
return new GenericModel<int> { Data = _searchService.Save(searchCriteria) };
}
GenericModel<T>
只是我为此目的包装值的一个类。
public class GenericModel<T>
{
public T Data { get; set; }
}