$ retorno de chamada de recurso (erro e sucesso)

Estou usando o AngularJS 1.1.3 para usar o novo $ resource com promises …

Como posso obter o retorno de chamada disso? Eu tentei da mesma maneira que fiz com $ http:

$resource.get('...'). success(function(data, status) { alert(data); }). error(function(data, status) { alert((status); }); 

Mas não há funções de ‘sucesso’ nem ‘erro’ …

Eu também tentei isso:

 $resource.get({ id: 10 },function (data) { console.log('success, got data: ', data); }, function (err) { alert('request failed'); }); 

Que sempre imprime “sucesso, tem dados” mesmo que o retorno seja um 404

Qualquer ideia?

obrigado

A partir de um PR em resources de angular e angular 1.2, o angular estará mudando para uma maneira mais simples de executar a verificação de sucesso / erro. Em vez de append callbacks ou um método $, tanto o Resource.get (..) quanto o instance.get () suportarão o método $ promise, que naturalmente retorna uma promise para ambos.

A partir do angular 1.2, o recurso $ promise entrará em vigor: promises $

Mude sua solicitação “get” para algo ao longo dessas linhas (o exemplo original está na página inicial do angularjs.org):

 factory('Project', function($resource) { var Project = $resource('https://api.mongolab.com/api/1/databases' + '/youraccount/collections/projects/:id', { apiKey: 'yourAPIKey' }, { update: { method: 'PUT' } } ); Project.prototype.update = function(cb) { return Project.update({id: this._id.$oid}) .$promise.then( //success function( value ){/*Do something with value*/}, //error function( error ){/*Do something with error*/} ) }; Project.prototype.destroy = function(cb) { return Project.remove({id: this._id.$oid}) .$promise.then( //success function( value ){/*Do something with value*/}, //error function( error ){/*Do something with error*/} ) }; return Project; }); 

Em algum outro lugar do controlador, você pode instanciar uma instância de recurso “Projeto”, na qual você pode usar a mesma interface para sucessos e erros:

 var myProject = new Project(); myProject.$get({id: 123}). .$promise.then( //success function( value ){/*Do something with value*/}, //error function( error ){/*Do something with error*/} ) 
 var MyResource = $resource("/my-end-point/:action", {}, { getSomeStuff: { method:"GET", params: { action:"get-some-stuff" }, isArray: true }, getSingleThing: { method:"GET", params: { action:"get-single-thing" }, isArray: false } }); function MyController(MyResource) { var itemList = MyResource.getSomeStuff({}, function success() {}, function err() {}); // will call: /my-end-point/get-some-stuff // will be array. each object is resource's instance var item = MyResource.getSingleThing({id:123}, function success() {}, function err() {}); // will call: /my-end-point/get-single-thing?id=123 // will be object. an instance of resource } 

Confira também o exemplo em docs: ngResource

Dois caminhos

 var resource = $resource(""); resource.$promise.then(function(data){ // do stuff success }, function(error){ //do stuff error }); 

Outro jeito

 var resource = $resource(""); resource({}, function success(data){ //do stuff }, function error(error){ //do stuff }