- 2014-02-14 (Fri) 12:37
- Uncategorized
これもはまったのでメモ。
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を使うと、はまってしまうかも。
- Newer: chefのレシピをテストする
- Older: YeomanでAngularJSでローカルでGruntServer(LiveReload)を使いつつ、VargrantでNodeのデータをAjaxでとってきたい