试图用参数发布对象 - 角度js

时间:2014-09-11 09:51:41

标签: javascript angularjs http-get

我正试图像这样做一个http get角度:

$http
    .get(some url, {
        params: {
            description: params.description,
            from: params.from,
            to: params.to
        }
     })
     .success(function (data,status) {
          $scope.info_show = data
     });

就是这样,params对象参数是根据用户输入设置的,所以如果用户没有为from属性输入任何东西(某些输入文本fielt),那么它将是未定义的。

我的问题是我不能只传递params对象,因为它不会过滤,如果我甚至在其中一个属性上传递undefined,那么默认情况下Web服务将返回所有内容,有人可以告诉我一个方法动态地做这个?

1 个答案:

答案 0 :(得分:0)

您可以使用函数来过滤params对象。

这个会收到您要过滤的参数/属性列表以及要过滤的src对象:

var filterParams = function(params, src) {
  var result = {};
  angular.forEach(params, function(p) {
    if (angular.isDefined(src[p])) {
      result[p] = src[p];
    }
  });
  return result;
};

然后像这样使用它:

$http.get(some url, {
    params: filterParams(['from', 'to', 'description'], params)
})
.success(function (data,status) {
    $scope.info_show = data
});