Thursday, May 23, 2024
 Popular · Latest · Hot · Upcoming
22
rated 0 times [  27] [ 5]  / answers: 1 / hits: 75659  / 11 Years ago, wed, march 20, 2013, 12:00:00

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


More From » angularjs

 Answers
22

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*/}
)

[#79458] Tuesday, March 19, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jamaal

Total Points: 515
Total Questions: 102
Total Answers: 107

Location: France
Member since Thu, May 6, 2021
3 Years ago
;