【发布时间】:2016-03-10 15:18:56
【问题描述】:
我正在构建一个 Angular 应用程序,并且有一个执行 XHR 的工厂,并将承诺返回给调用它的控制器。当我收到错误时,它会在工厂失败方法中被捕获,但因为我将它作为承诺返回,它仍然会调用控制器中的成功方法。有没有办法让工厂错误传递给控制器失败方法并防止调用控制器成功方法?原因是我想在客户端正确显示成功和错误通知。我是不是完全错了?
示例工厂方法:
function add(payload) {
return $http.post('/companies', payload)
.then(success)
.catch(fail);
function success(response) {
return response.data;
}
function fail(error) {
$log.log('Company Factory XHR failed: ', error.data);
}
}
对应的控制器方法:
function add(isValid) {
if (isValid) {
var payload = {
company: vm.new_company
};
companyFactory.add(payload)
.then(success)
.catch(fail);
}
function success() {
getCompanies();
vm.new_company = {};
toastrFactory.success("Added company!");
}
function fail(err) {
$log.log('Companies Controller XHR Failed: ' + err.data);
}
}
【问题讨论】:
标签: javascript angularjs xmlhttprequest promise