根据响应数据将请求成功转为错误

时间:2014-11-25 11:39:34

标签: angularjs angularjs-service angular-promise

我对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;
                  });

1 个答案:

答案 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);
});