1

私は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 
4

1 に答える 1