我开始学习AngularJs。
使用AngularJs,我有以下名为“datacontext”的工厂,该工厂公开了一个获取具有特定id的人员资源的函数:
function datacontext($resource, common) {
var $q = common.$q;
var People = $resource('/api/people/:id', { id: '@id' });
var service = {
getPerson: getPerson
};
return service;
function getPerson(id) {
var p = People.get({ id: id });
return $q.when(p);
}
}
在我的控制器内部,我按如下方式使用它:
function getPerson(id) {
return datacontext.getPerson(id).then(onSuccess, onError);
}
function onSuccess(data) {
return vm.person = data;
}
function onError(data) {
alert("A");
}
我的服务通过返回特定id的正确资源来工作,如果找不到,则返回404找不到的资源。
在上面的代码块中,即使有404响应,它似乎总是调用onSuccess回调。
我做错了什么?任何帮助将不胜感激。
答案 0 :(得分:1)
为什么不使用$ q服务进行承诺?怎么样:
function getPerson(id) {
var defer = $q.defer();
People.get({ id: id }, function() {
//success
},
function(){
//fail
});
return defer.promise;
}
不要忘记为您的服务注入$ q