Javascript 如何从我的控制器在我的服务中正确公开我的$http请求的结果?

Javascript 如何从我的控制器在我的服务中正确公开我的$http请求的结果?,javascript,angularjs,angularjs-service,Javascript,Angularjs,Angularjs Service,现在,我正在将$http请求的完整结果传回控制器。我这样做是为了显示一个本地加载微调器,处理从API返回的任何应用程序错误,例如-服务器端验证,获取数据中的任何反馈消息,例如-成功创建的新用户,处理ajax错误消息一些可能是可恢复的,另一些则不取决于您正在执行的操作 控制器方法: MemberService.getMember($scope.accountID) .success(function (data, status) { $scope.showGetMemberSpinner =

现在,我正在将$http请求的完整结果传回控制器。我这样做是为了显示一个本地加载微调器,处理从API返回的任何应用程序错误,例如-服务器端验证,获取数据中的任何反馈消息,例如-成功创建的新用户,处理ajax错误消息一些可能是可恢复的,另一些则不取决于您正在执行的操作

控制器方法:

MemberService.getMember($scope.accountID)
.success(function (data, status) {
  $scope.showGetMemberSpinner = false;
  if (!data.HasError) {
    $scope.data = data;
    $scope.account = data.Account;
    $scope.doShowMemberDetails = true;
  } else {
    $scope.getMemberErrorMsg = data.ErrorMsg;
  }
}).
error(function (data, status) {
  $scope.getMemberAjaxErrorMsg = "my message";
  $scope.doShowMemberDetails = false;
  $scope.showGetMemberSpinner = false;

});
服务方式:

memberService.getMember = function (accountID) {
  var params = {};
  params.accountID = accountID;

  var promise = $http({
    method: 'post',
    data: JSON.stringify(params),
    url: '/Admin/Members/GetMember',
  });
  return promise;
};

我的控制器中是否还有太多的逻辑?

最好处理服务本身中的任何ajax错误,并向调用者返回$q承诺,只返回返回返回的数据,而不是原始的ajax响应。

如果有消息要显示以及是否有一些消息,我将使用$http拦截器查看结果请求打开以显示微调器请看这里:-我认为控制器中的逻辑有点太多我也会说控制器中的逻辑太多。我通常在服务中打开承诺,然后返回实际值/json。为什么不使用类似于:@cbass-您将其作为$q返回?您能提供什么样的示例?根据问题的范围以及实际功能如何成为更大范围的一部分,实现会有所不同。我还通常将数据缓存为服务中的促销,这意味着我必须在发出请求之前检查缓存。但如果我要解决您的问题,我可能会在服务中处理请求并返回$q承诺。然后在仅包含数据och错误消息的控制器中展开承诺。希望这有帮助。