$ Recursos foi destinado a recuperar datos dun extremo, manipular e enviar de novo. Tes algúns dos que hai, pero non estás aproveitando o que se fixo que facer.
É óptimo ter métodos personalizados no teu recurso, pero non queres perder características interesantes é que vén con OOTB.
Editar: Creo que non me explicou ben como o orixinal, pero $ recurso dalgunhas cousas divertidas con retorno. All.Get () e All.Query () Devolve o obxecto de recurso e transfírao ao devolución de devolución cando está completo. Fai algunhas cousas de fantasía coas promesas detrás das escenas que significa que podes chamar $ Save () antes de que o Get () de devolución de chamada realmente dispara e que esperará. Probablemente sexa a mellor forma de xestionar os seus recursos dentro dunha promesa () ou o método de devolución de chamada.
Norma de uso
var Todo = $resource('/api/1/todo/:id');//create a todovar todo1 = new Todo();todo1.foo = 'bar';todo1.something = 123;todo1.$save();//get and update a todovar todo2 = Todo.get({id: 123});todo2.foo += '!';todo2.$save();//which is basically the same as...Todo.get({id: 123}, function(todo) { todo.foo += '!'; todo.$save();});//get a list of todosTodo.query(function(todos) { //do something with todos angular.forEach(todos, function(todo) { todo.foo += ' something'; todo.$save(); });});//delete a todoTodo.$delete({id: 123});
Do mesmo xeito, no caso de que o que publicou no OP, podería obter un obxecto de recurso e, a continuación, chamar a calquera das súas funcións personalizadas (en teoría):
var something = src.GetTodo({id: 123});something.foo = 'hi there';something.UpdateTodo();
Gustaríame experimentar coa aplicación OOTB antes de que saín e o meu propio foi inventado con todo. E se cre que non está a usar ningunha das características predeterminadas de $ Recursos, probablemente debería usar $ HTTP no que é o seu propio.
Actualización: angular 1.2 e promesas
Como angular, 1.2, promesa de apoio recursos. Pero non cambie o resto do comportamento.
Para aproveitar as promesas $resource
, ten que usar o $promise
do propiedade do valor devolto.
Exemplo de uso das promesas
var Todo = $resource('/api/1/todo/:id');Todo.get({id: 123}).$promise.then(function(todo) { // success $scope.todos = todos;}, function(errResponse) { // fail});Todo.query().$promise.then(function(todos) { // success $scope.todos = todos;}, function(errResponse) { // fail});
Só ten que ter en conta que a promesa de $ propiedade é unha propiedade en os mesmos valores que volvían. Pode ser tan estraño:
estes son equivalentes
var todo = Todo.get({id: 123}, function() { $scope.todo = todo;});Todo.get({id: 123}, function(todo) { $scope.todo = todo;});Todo.get({id: 123}).$promise.then(function(todo) { $scope.todo = todo;});var todo = Todo.get({id: 123});todo.$promise.then(function() { $scope.todo = todo;});