私は現在、Angular リソース 1.2.x を使用して REST API を実装する作業を行っています。1.2.x リリースで、angular-resource がいくつかの既存のパターンを壊したといういくつかのヒントに出くわしました。私の質問は、次のシナリオを angular-resource 1.2.x で正しく処理する方法です。
データ (/offers/:id) を返す REST API と、angular-resource を使用してこれらの API を抽象化する angular サービスがあります。このサービス内には、指定された ID で API を照会する get 関数があります。
_offerResource.get({offerId: id})
_offerResource 自体は $resource のインスタンスです。
私のコントローラーでは、ビューがバインドされている $scope に変数のオファーがあります (例: $scope.offer.title, ...)。
次のコード行で API への呼び出しを実装しようとしました。
_tempOffer = OfferAPI.get($routeParams.offerId)
しかし、残念ながらバインディングは機能していません。この SO エントリ ( Angularjs promise not binding to template in 1.2 ) に基づいて、angular-resource の動作が変更されました。しかし、 $promise.then(...) ステートメントを使用するアプローチは正しいのでしょうか? エンジニアリングの観点からは、サービスが使用できるオブジェクトを返すのではなく、コントローラーでこれを処理する必要があるため、これは非常に見苦しく見えます。
これは機能しますが、前述のように、SW 設計の観点からは私の好みのアプローチではありません。
_tempOffer = OfferAPI.get($routeParams.offerId)
_tempOffer.$promise.then((response) ->
$scope.offer = Offer.initializeFromJSON(response.offer)
)
API の応答を別のオブジェクトに変換するので、offer オブジェクトを $scope.offer 変数にバインドする前に、次の変換を行う必要があります。
$scope.offer = Offer.initializeFromJSON(response.offer)
助けてくれてどうもありがとう!