AngularJS $ http.get将变量作为param键传递

时间:2017-11-16 19:21:53

标签: javascript angularjs

我是AngularJS的新手并试图查看这是否可行。我在网上查了很多$http.get个问题,但找不到答案。

我有一个api调用,它有三种不同的参数键可能性。

$http.get(url, {params : {$scope.searchBy : $scope.value}})

$scope.searchBy被标记为语法错误。它从下拉列表中有3个可能的值。

我尝试var search = $scope.searchBy;但是当我使用{params : {search : $scope.value}}时,值是“搜索”而不是$ scope.searchBy。

如果没有if语句和单独的api调用,可以如何做到这一点?

谢谢。

2 个答案:

答案 0 :(得分:1)

你必须做这样的事情,因为这是有效的javascript语法。

var paramValues = {};
paramValues[$scope.searchBy] = $scope.value;
return $http.get(url, {params: paramValues});

使用问题中的语法定义对象时,属性/字段名称必须是已知常量。如果它是可变的,在这种情况下你想要,那么你可以先创建对象,然后使用obj[propertyName] = someValue;表示法设置值。

答案 1 :(得分:1)

使用property accessor bracket notation  构建所需的params对象:

var config = { params: {} };
config.params[$scope.searchBy] = $scope.value;

$http.get(url, config);