2014-09-11 67 views
0

我试图做角一个HTTP GET这样的:尝试后对象与参数 - 角JS

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

这里的东西,params对象参数是基于用户输入的设定,所以如果用户没有输入任何东西来从属性(某些输入文本字段)它将是未定义的。

我的问题是,我不能只传递params对象,因为它不会过滤,如果我传递未定义的属性,那么web服务默认情况下会返回一切,有人会告诉我一个动态地做这件事的方式?

+0

你能为提供HTML您的表单也会更容易为您找到解决方案 – maurycy 2014-09-11 09:55:23

+0

您将params用作对象名称和输入。 – topless 2014-09-11 09:57:12

+0

@topless它会给我同样的结果,如果我改变它... – user2405469 2014-09-11 09:59:44

回答

0

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

这一个接收要过滤的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 
});