Как передать название модели в angularJS restful api

Я новичок в AngularJS, но уже некоторое время использую Backbone.

Я хочу создать повторно используемый API-интерфейс restful, которому я могу передать имя модели, чтобы использовать его для разных моделей.

На данный момент у меня есть:

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 

1 ответ

Вы можете попробовать 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();

И так далее.. оформить документацию

Другие вопросы по тегам