Javascript Q库的角度问题
我正在学习pluralsight.com上与Angular.js相关的教程。到目前为止,我没有严重的问题。教程非常好,容易理解。然而,有些事情是我自己无法解决的。我希望我的同事在成功或失败时做出不同的反应。在这种情况下,他们总是像成功一样开火 服务:Javascript Q库的角度问题,javascript,angularjs,Javascript,Angularjs,我正在学习pluralsight.com上与Angular.js相关的教程。到目前为止,我没有严重的问题。教程非常好,容易理解。然而,有些事情是我自己无法解决的。我希望我的同事在成功或失败时做出不同的反应。在这种情况下,他们总是像成功一样开火 服务: var resource = $resource('/data/event/:id', {id: '@id'}); return { getEvent: function (id) { var deferred = $q.d
var resource = $resource('/data/event/:id', {id: '@id'});
return {
getEvent: function (id) {
var deferred = $q.defer();
resource.get({id: id},
function (event) {
console.log("This is (EVENT): " + event);
deferred.resolve(event);
},
function (response) {
console.log("This is (RESPONSE): " + event);
deferred.reject(response);
});
return deferred.promise;
控制器:
$scope.event = eventData.getEvent(2)
.then (
function(event) {
$scope.event = event;
console.log(event);
},
function(response) {
console.log(response);
}
);
换句话说,如果我发送了错误的id(加载不存在的JSON文件),我希望它告诉我。中的
$resource
服务将调用$http
服务,将一些REST约定应用于http请求。这些都有文件记录
在处理来自$resource
的承诺时,如果HTTP状态代码为200,则将执行成功回调。否则(如果HTTP状态代码在400或500范围内),将执行错误回调。这是一个典型的REST惯例
因此,由于您的服务总是返回200个状态代码,$resource
假定这是一个成功的服务器调用,并执行成功回调
为了处理这个问题,您需要直接使用$http
,或者更改您的服务,以便它返回正确的http状态代码
希望这有帮助。您的“失败”返回的HTTP状态码是什么?你看到了哪个console.log(你没有看到哪个)?我唯一看到的是:console.log(“这是(事件):”+EVENT);那总是被解雇!好的,您的服务返回什么HTTP状态码?它不是200吗?总是200。据费德勒说,这是你的问题。当服务返回200以外的内容时,称REST接口出错。400或500范围内的某个值被视为错误。因此,
$resource
永远不会调用错误函数(除非状态代码不是200)。