我对Angular js相对较新,并尝试将promises与服务一起使用并获得引用http://plnkr.co/edit/b4HPbX2olM745EfHVcc6?p=preview。但在我的应用程序中,我收到了响应{"响应":#34;加载报告列表时出现异常","错误":"异常获取所有记录。 ""状态":"失效"}。当我收到这样的回复时,我需要在"错误"中显示一条警告消息。 (即获取所有记录的异常)并在我的控制器中将$ scope.data设置为[]。我需要对服务和控制器进行哪些更改来处理此问题。任何帮助深表感谢。
在服务中:
return $q.when(originalRequest)
.then(function(res) {
data = res.ResultSet.Response;
return data;
});
在控制器中,
DashboardsDataService.getNetSpendOverTimeData()
.then(function(data) {
$scope.data = data;
});
以下是我对Java动作类的原始请求:
var originalRequest = $.ajax({
async : false,
url : "/dash2/dashd2ajax.do",
type : "POST",
data : {
action : 'getNetSpendOverTime',
customerId : selectedAccTd,
carriersId : selectedCarriers,
fromDate : fromDate,
toDate : toDate,
modes : selectedModes,
services : selectedServices,
dateType : selectedDateType,
lanesList : selectedLaneList
},
dataType : "json"
});
return $q.when(originalRequest)
.then(function(res) {
data = res.ResultSet.Response;
return data;
});
答案 0 :(得分:1)
如果您要问的是"如何根据结果数据"将请求成功转为失败,请查看以下示例:
return $q.when(originalRequest).then(function (res) {
if (res.ResultSet.error) {
return $q.reject(res.ResultSet.error);
} else {
return res.ResultSet.Response;
}
});
使用$q.reject()
将您的数据转换为真实的"承诺失败",因此在您的控制器中,您可以使用普通的promise API:
doSomethingAsynchronous().then(function (data) {
$scope.data = data;
}, function (error) {
$scope.data = [];
alert(error);
});