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;
});

更新:我只是想出了一个办法。它可能不是最好的,但它确实有效。欢迎任何其他建议!只需将“对象”属性添加到模型中:

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

0

您可能想尝试https://github.com/klederson/ModelCore ( ModelCore )

它易于建模和构造,当然还有……使用。

model.$find({ filter : "John" },{},true); //to find all with query parameters 
model.$get(1); //to retreive the user with id 1
model.$save()
model.$deelte();

等等..查看文档

于 2013-05-22T00:34:04.910 回答