我是 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