Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

$resource callback (error and success)

I´m using AngularJS 1.1.3 to use the new $resource with promises...

How can I get the callback from that? I tried the same way I did with $http :

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

But there is no 'success' neither 'error' functions...

I also tried that :

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

That always print "success, got data" even if the return is a 404 ...

Any idea?

Thanks

like image 679
Paul Avatar asked Mar 20 '13 17:03

Paul


1 Answers

As of a PR on angulars resource and angular 1.2, angular will be switching to a simpler way of performing success / error checking. Instead of attaching callbacks or a $then method, both the Resource.get(..) and instance.get() will support the $promise method, which naturally returns a promise for both.

As of angular 1.2 the $promise feature will go live: $promise changes

Change your "get" request to be something along these lines (original example is on angularjs.org front page):

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; }); 

Somewhere else in the a controller you may instantiate a resource "Project" instance where you can use the same interface for successes and errors:

var myProject = new Project();  myProject.$get({id: 123}).    .$promise.then(       //success       function( value ){/*Do something with value*/},       //error       function( error ){/*Do something with error*/}    ) 
like image 149
Ryan Q Avatar answered Sep 23 '22 04:09

Ryan Q