#topicpath
----


#contents



***サンプル [#gb08de87]
$resourceを使ったサンプルです。というかまだ殴り書きメモ。

RESTの仕様は[[$httpのときのサンプル>AngularJS/TIPS集/$http]]とおなじく、
 /api/hoge/ にHTTP GETすると一覧(JSON配列)
 /api/hoge/[id].json にGETすると詳細
 /api/hoge/ にHTTP POST すると登録
こんなよくある仕様だとします。これらに対して、[[$httpのときのサンプル>AngularJS/TIPS集/$http]] のときのようにサービスを定義しますが、$resourceはあらかじめ定義済みのメソッドがあり、それをそのまま利用するとして

 hogeService.query();
 hogeService.get(data);
 hogeService.save(postData);
こんな感じでサービスを呼び出せるようにします。

***サービスの定義 [#i3b1c894]

 angular.module(APP_NAME)
     .factory('hogeService', ['$resource', function ($resource) {
         // Public API here
         return $resource('/api/hoge/:key.:ext',
             {},
             {}
         )
     }]);

引数の
 /api/hoge/:key.:ext
については
 $resource.get({key: '012345', ext: 'json'}
とメソッドを呼び出した場合
 http://xxx/api/hoge/012345.json
が呼び出されるという意味です。

メソッド引数のプロパティと異なる場合は、たとえば
 $resource.get({key1: '012345', ext1: 'json'}
などとなる場合は、$resourceのメソッドの定義を以下のように書きかえます。
 $resource('/api/hoge/:key.:ext',
             {key: '@key1',ext: '@ext1'}, ←ここで紐付けを定義する
             {}
 )

2016/03/07追記: コレ、POSTとかでBodyでJSONを飛ばす場合だけ有効っぽい。

2016/04/26追記: コレについて、ちゃんと調査した結果は[[こちら>AngularJS/TIPS集/$resource/パラメタの操作について]]。



***コントローラからの呼び出し方 [#tf7e9d0f]


 angular.module(APP_NAME)
     .controller('PasswordCtrl', ['hogeService', '$scope', function (hogeService, $scope) {
          // $resourceのサンプル
         $scope.hoges = hogeService.query();  // あらかじめ定義されたqueryを呼び出す
 
         $scope.addRow = function () {
             $scope.hoges.push($scope.postData);
             hogeService.save($scope.postData); // あらかじめ定義されたsaveを呼び出す
         };
 
         $scope.delete = function (id) {
             console.log(id);
             var result = hogeService.get({key: id, ext: 'json'},
                 function () {
                     alert(result.key);
                 }); // あらかじめ定義されたgetを呼び出す。コールバックを指定して戻ってきたらダイアログを出す。
         };
 
 
     }
     ])
 ;



**関連リンク [#xa828190]
-[[$resource | AngularJS 1.2 日本語リファレンス | js STUDIO>http://js.studio-kingdom.com/angularjs/ngresource_service/$resource]]
paramDefaults
**関連リンク [#pd80c051]

----
この記事は
#vote(おもしろかった,そうでもない)

#comment

#topicpath

SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS