我一直在AngularJS中编写一个服务来保存一些数据,如果失败,则提醒用户。但是,在我创建资源并调用$ save:
之后myResource.$save(function(success) {
console.log(success);
}, function(error) {
console.log(error);
});
我希望错误回调的参数是一个包含数据,状态,标题等的对象,但我得到的只是一个带有“then”函数的对象。我试着在JSFiddle中模拟它:
http://jsfiddle.net/RichardBender/KeS7r/1/
但是,此示例的工作方式与我原先预期的相同。我猛拉了这个JSFiddle示例,并把它放在我的项目中,它有我最初描述的相同问题,尽管据我所知,其他一切都是平等的。有谁知道为什么会这样?我的项目是用Yeoman / Bower / Grunt创建的,但我不明白为什么这些东西会在这里产生影响。
谢谢, 理查德
答案 0 :(得分:3)
我解决了这个问题。错误发生在我的HTTP拦截器中,在错误代码中,我意外地返回$ q.reject(promise)而不是$ q.reject(响应)。
错误版本:
.factory('httpInterceptor', function($q) {
return function(promise) {
return promise.then(
// On success, just forward the response along.
function(response) {
return response;
},
function(response) {
// ... where I process the error
return $q.reject(promise);
}
);
};
固定版本:
.factory('httpInterceptor', function($q) {
return function(promise) {
return promise.then(
// On success, just forward the response along.
function(response) {
return response;
},
function(response) {
// ... where I process the error
return $q.reject(response);
}
);
};
-Richard