私はAngularJSは初めてですが、Backboneをしばらく使用しています。
さまざまなモデルに使用できるように、モデル名を渡すことができる再利用可能な RESTful API を作成したいと考えています。
現時点で私は持っています:
angular.module('healthplanApiServices', ['ngResource'])
.factory('Api', function($resource) {
return $resource(base_url + 'api/:object/:id', {
id : '@id', object : 'actions'
}, {
query : {
method : 'GET',
isArray : true,
callback : "JSON_CALLBACK"
},
save : {
method : '@id' ? 'PUT' : 'POST',
isArray : true,
callback : "JSON_CALLBACK"
}
});
});
...モデルを「アクション」として設定します。次に、コントローラーで次を使用します。
// get the collection
Api.query(function(r) {
$scope.actions = r;
});
$scope.toggleDone = function(a) {
a.done = !a.done;
//save an item
Api.save(a);
}
それはすべて問題ありませんが、各モデル タイプのモデル名 (この場合は「アクション」) を渡すにはどうすればよいですか。たとえば、次のようにファクトリ関数に入れる代わりに、次のようにします。
id : '@id', object : 'actions'
...ではなく、次のようなものです:
var ActionApi = Api.setObject('actions');
ActionApi.query(function(r) {
$scope.actions = r;
});
更新:方法を見つけました。それは最善ではないかもしれませんが、うまくいきます。他の提案は大歓迎です!モデルに 'object' 属性を追加するだけです:
Api.query({object: 'actions'}, function(r) {
$scope.actions = r;
angular.forEach($scope.actions, function(a) {
a.object = 'actions' });
});
Api.save(a);// also works