0

を解決しています$私がgetRolesが解決されたら、私はこのようなコントローラでそれを使用することができます:戻り値は、かつて私は、このような作業のコードを持っているリソースの約束が

の役割の数を返すMyServiceでそのような関数を作成することです0
$scope.RolesCount = MyService.getRolesCount(); 

と私のgetRolesCount()メソッドは、私は$ promise.thenを(使用することはできませんのでMyServiceで内側に)何かを返す必要があるため、その後のhtml

{{RolesCount}} 

に残念ながら、私はこれを行う方法を見当がつかない。もっと正確なものを見つけたら、質問のタイトルを更新しようとします。

+0

getRolesアクションを 'actions'オプションで再定義し、transformResponseを提供する必要があります。 – estus

+0

Yeapですが、Resource/Repositoryレイヤー上で操作するように聞こえます。返されたデータをサービスレイヤーで処理したい場合はどうすればいいですか?結果をコントローラに返します($ resourceと同様にオブジェクト参照として) – Kostrzak

+0

はい、サービスはより適した場所です。しかし、あなたのケースでは、これらのアプローチのどれも、 ''は応答を変換するだけではなく、その値をアンラップするので、どちらも機能しません。さらに、リソースでこれを行う必要はありません。 – estus

答えて

0

サーバーレスポンスをサービスで変換する必要がある場合は、thenをそこに移動する必要があります。しかし、上記のコードのように、thenが約束をラップし、スコープに値を割り当てると想定されているのは実用的ではありません。

$reaourceは、約束の解像度で満たされたオブジェクトを返します。リソースが表示される方法は、次のとおりです。

{{Roles.length}} 

オブジェクトが更新されると、ビューも更新されます。値を別の変数に代入するのは非効率的です。

getRolesCountは非同期であり、そしてそれはで解決した値がスカラーであるので、それは

$scope.RolesCount = MyService.getRolesCount(); 

ような何かをすることは不可能です。 `async..await(TypeScriptまたはES2017)でフラット化することは可能ですが、this answerで説明されているように、AngularJSダイジェストとの制御フローを同期させる追加の手段が必要になります。

関連する問題