我有很多字段/模型,除了范围变量名之外,控制器中放置的逻辑将是相同的。如果可能的话,我希望尽可能通过在范围变量名称后附加数字来避免使用巨大的IF语句。我可以在jquery等中做到这一点但是如何在Angular中做到这一点?
例如,我有$ scope.search1和$ scope.search2。我更倾向于$ scope.search + id。这可能吗?
在我拥有的控制器中
$scope.getresults= function() {
if ($scope.search1) {
$http.jsonp('http://api.com/', {
params: {
query: $scope.search1
}
if ($scope.search2) {
$http.jsonp('http://api.com/', {
params: {
query: $scope.search2
}}}
我更愿意这样做:
$scope.getresults= function(param) {
$http.jsonp('http://api.com/', {
params: {
query: $scope.search + param
}}
但这显然不起作用。任何帮助表示赞赏。
答案 0 :(得分:0)
你总是可以使用对象表示法。
$scope['search' + param]
答案 1 :(得分:0)
Javscript中对象内部的属性可以通过两种方式访问:Dot Notation(object.key)或括号表示法对象['key'],在后一种方式中,您可以使用表达式或动态变量名称,如object [expression] ,因为$ scope是一个javascript对象,所以使用括号表示法来访问带有你正在传递的动态值的范围会很棒:
$scope.getresults= function(param) {
$http.jsonp('http://api.com/', {
params: {
query: $scope['search' + param]
}}