Home > Uncategorized > AngularJSのResourceを使うときの戻り値の使い分け

AngularJSのResourceを使うときの戻り値の使い分け

これもはまったのでメモ。

AngularJSのResource機能を使って、外部のJSONを返すサービスから値を取得して、データバインドして表示させるというプログラムを作ったとき。

.query()を使うと、値が複数ある(配列形式で返せるもの)はきちんととれるけど、 値が一つしかない(配列にならないもの)は以下のようなエラーを返して、なんでだ、となった。

Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an array but got an object

理由はなんてことはなく、使用しているメソッドが間違えていた、というだけ。戻り値が配列にならないものは.get()を使う必要がある。こんな感じ。

.controller('Ctrl', function ($scope,$resource) {
    var JSONdata1 = $resource('http://192.168.50.12/nodejs/aaa');
    $scope.jsondata1 = JSONdata1.query();// 戻り値が配列(複数)の場合はquery

    var JSONdata2 = $resource('http://192.168.50.12/nodejs/bbb');
    $scope.jsondata2 = JSONdata2.get(); // 戻り値がJSON1つの場合はget
});

ちなみにViewの書き方は以下のようになる。

<p>.query: {{jsondata[0].name}}<p>
<p>.get: {{jsondata3.name}}<p>

わかればなんてことない問題だけど、理解しないまま適当にググってResourceを使うと、はまってしまうかも。

Comments:0

Comment Form
Remember personal info

Home > Uncategorized > AngularJSのResourceを使うときの戻り値の使い分け

Search
Feeds
Meta

Return to page top