javascript - change - $ callback de recurso(error y éxito)
title css (3)
A partir de un PR en el recurso angular y angular 1.2, angular cambiará a una forma más sencilla de realizar la verificación de éxito / error. En lugar de adjuntar devoluciones de llamada o un método $ then, tanto Resource.get (..) como instance.get () admitirán el método $ promise, que naturalmente devuelve una promesa para ambos.
A partir de 1.2 angular, la función $ promesa se activará: $ promesa cambios
Cambie su solicitud de "obtención" para que sea algo en este sentido (el ejemplo original se encuentra en la página de inicio de 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;
});
En otro lugar del controlador a puede crear una instancia de "Proyecto" de recursos donde puede usar la misma interfaz para los éxitos y errores:
var myProject = new Project();
myProject.$get({id: 123}).
.$promise.then(
//success
function( value ){/*Do something with value*/},
//error
function( error ){/*Do something with error*/}
)
Estoy usando AngularJS 1.1.3 para usar el nuevo $ resource con promesas ...
¿Cómo puedo obtener la devolución de llamada de eso? Intenté de la misma manera que lo hice con $ http:
$resource.get(''...'').
success(function(data, status) {
alert(data);
}).
error(function(data, status) {
alert((status);
});
Pero no hay funciones de ''éxito'' ni de ''error'' ...
También intenté que:
$resource.get({ id: 10 },function (data) {
console.log(''success, got data: '', data);
}, function (err) {
alert(''request failed'');
});
Eso siempre imprime "éxito, obtuve datos" incluso si el rendimiento es un 404 ...
¿Alguna idea?
Gracias
Dos caminos
var resource = $resource("");
resource.$promise.then(function(data){
// do stuff success
}, function(error){
//do stuff error
});
Otra manera
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
}
También ngResource ver el ejemplo en docs: ngResource