为什么我的角度服务'then'方法返回一个已解决的promise of intead值?

时间:2016-06-27 18:22:14

标签: javascript angularjs angular-promise

我不明白为什么“结果”是一个已解决的承诺而不是实际值:

searchService.getLink(vm.queryObject).then(function (result) {
    console.log(result);
});

getLink()的代码如下:

function getLink(query) {
    return $resource(uriService.searchLink).save(query).$promise;
}

我正在其他地方做一些非常相似的事情,而是在then()回调中得到了值。我错过了什么?

更新我错了,“结果”是一个有承诺的Resource对象。但问题仍然存在,为什么承诺的价值不会传递给回调?

1 个答案:

答案 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; }
}