我是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调用,可以如何做到这一点?
谢谢。
答案 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);