(Angular JS)如果响应是JSON对象的数组,如何通过传递params来过滤$ http.get?

时间:2016-08-24 15:55:16

标签: javascript angularjs json

我正在向我的REST api发出$http GET请求以获取项目列表。我想要做的是使用param选项过滤响应,仅获取分配给特定人员的项目。

var config = {
  withCredentials: true,
  params: {
    AssigneeId: 12423
  }
};
$http.get(baseUrl + 'projects', config).then(function successCallback(response) {
  //do things on success
}, function errorCallback(response) {
  //do things on error
});

AssigneeId字段是project对象的属性。我遇到的问题是$http.get的响应是一组JSON个对象,导致param无用。我的回答看起来像这样:

[{
  ProjectName: 'project 1',
  AssigneeId: 12311,
  size: 5
}, {
  ProjectName: 'project 2',
  AssigneeId: 15232,
  size: 4
}, {
  ProjectName: 'project 3',
  AssigneeId: 43123,
  size: 2
}, {
  ProjectName: 'project 4',
  AssigneeId: 12423,
  size: 6
}]

我想对param做的只是'project 4'作为对GET请求的回复。我认为由于响应是阵列而无法正常工作?或者我做错了什么?

2 个答案:

答案 0 :(得分:0)

您可以在收到回复时对其进行过滤。

response = response.filter(function(a) {
  return a.AssigneeId === config.params.AssigneeId;
}).map(function(a) {
  return a.ProjectName;
})[0];

答案 1 :(得分:0)

正如@Kevin B所说,它必须得到你的服务器的支持。您需要与您的服务人员联系以解决此问题或通过正确的参数。直到你的服务器人修复此问题。你可以拥有这个新代码

$scope.playOrStop = function () {
    if($scope.playVisible){
       $scope.audiofile.play();
    }else{
       $scope.audiofile.stop();
    }

    $scope.playVisible = !$scope.playVisible;
};