var User = $resource(
'http://test/index.php'
);
var user = User.get({id:'1'});
// GET: http://test/index.php?id=1
// server returns: { "login":"foo", "name":"bar", "mail":"baz" }
user.name = "qux";
user.$save();
// POST: http://test/index.php?id=1
// server returns: { "login":"foo", "name":"bar", "mail":"qux"}
在这种情况下,当您调用save()
用户对象时,属性将被来自服务器的属性替换。
但如果服务器响应如下:
{
"errors":{
"login":"too short",
"name":"is already using that name.",
"mail":"invalid email."
}
}
会覆盖用户对象属性,而是会出现包含这些错误的属性错误。
有没有办法改变$resource
的行为?我想检查响应的状态,并在此基础上决定是更新对象的属性还是向用户报告错误。
答案 0 :(得分:5)
Angular的$resource
旨在与RESTful Web服务进行交互。
在RESTful Web服务中,如果在保存资源时出错,则应返回适当的HTTP状态(例如,400
)。
然后,您可以选择使用错误回调:
user.$save(function (response) {
console.log("success!");
}, function (response) {
console.log("error");
});
有关错误HTTP状态的完整列表: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error