2016-06-27 5 views
0

「結果が」代わりに、ここで実際の値の解決された約束である理由私は理解していないです:私は非常によく似た何かをやっているなぜ私の角度サービス 'then'メソッドは解決された約束を返すのですか?

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

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

getLink()のためのコードは次のようです代わりにthen()コールバックの値を取得します。私は何が欠けていますか?

更新私は間違っていましたが、「結果」は約束しているリソースオブジェクトです。しかし、問題は残っています。なぜ、約束の価値がコールバックに渡されないのでしょうか?

+0

私は実際には.successがデータを返す間に約束を返すと考えています。 – abdoutelb

+0

'$ promise'は何と思いますか? 'result.data'を試してください – charlietfl

+1

@charlietfl彼は' $ promise'が約束だと理解していると思います。なぜ彼がその約束を返し、それに 'それを '呼び、引数として与えられた'結果'の価値を得るのはなぜ理にかなっていないのです。*オブジェクトも約束です。通常、約束事は、約束の対象でないものが出るまで解決されるものではありません。私は角度1をよく知らないが、これも私を混乱させている。 – Katana314

答えて

0

私はそれがサーバーからデータをどのように戻していたのかと考えていました。

[HttpPost] 
[Route("search/link")] 
public int Link(SearchCriteria searchCriteria) 
{ 
    return _searchService.Save(searchCriteria); 
} 

しかし$リソースは、サーバーから返されるオブジェクトを必要としなければならないので、私はその後、対象となる私の戻り値の型を変更し、:私はちょうど私がこれをしようとしていたように、サーバからIDを返したかったです値がそのオブジェクトのプロパティとして表示され始めました。

[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; } 
} 
関連する問題