Angular中的动态范围变量名称

时间:2015-09-22 00:14:01

标签: javascript angularjs

我有很多字段/模型,除了范围变量名之外,控制器中放置的逻辑将是相同的。如果可能的话,我希望尽可能通过在范围变量名称后附加数字来避免使用巨大的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
        }}

但这显然不起作用。任何帮助表示赞赏。

2 个答案:

答案 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]
        }}