$ $ foi destinado a recuperar dados de uma extremidade, manipular e enviar novamente. Você tem alguns dos que há, mas você não está realmente aproveitando o que foi feito para fazer.
é ótimo ter métodos personalizados em seu recurso, mas você não quer perder recursos interessantes é que ele vem com Ootb.
Edit: Acho que não me expliquei bem como o original, mas $ recurso de algumas coisas engraçadas com retornos. All.Get () e All.Query () Devolva o objeto de recurso e o transfere para o retorno de chamada quando estiver concluído. Faz algumas coisas de fantasia com promessas por trás das cenas que significam que você pode chamar $ salvar () antes do get () de retorno de chamada, e o que vai esperar. É provavelmente a melhor maneira de lidar com seus recursos dentro de uma promessa () ou o método de retorno 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});
Da mesma forma, no caso de que você publicou no OP, você pode obter um objeto de recurso e, em seguida, ligar para qualquer uma das suas funções personalizadas (em teoria):
var something = src.GetTodo({id: 123});something.foo = 'hi there';something.UpdateTodo();
Eu gostaria de experimentar o aplicativo OOTB antes de sair e meu próprio foi inventado no entanto. E se você achar que não está usando nenhum dos recursos padrão do recurso $, provavelmente deve usar $ HTTP no qual é o seu próprio.
update: angular 1.2 e promete
Como angular, 1.2, prometo recursos de suporte. Mas não mude o resto do comportamento.
Para aproveitar as promessas $resource
Você precisa usar o $promise
do propriedade no valor retornado.
Exemplo de uso de promessas
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});
Tenha em mente que a promessa de $ imobil é uma propriedade em os mesmos valores que voltaram. Você pode ficar tão estranho:
Estes são 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;});