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 :
$re
Two ways
var resource = $resource("");
resource.$promise.then(function(data){
// do stuff success
}, function(error){
//do stuff error
});
Other way
var resource = $resource("");
resource({}, function success(data){
//do stuff
}, function error(error){
//do stuff
}
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
}
Also check out the example in docs: ngResource
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*/}
)