2

私は現在、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)

助けてくれてどうもありがとう!

4

0 に答える 0