角度JS:无法在ng-repeat中将值设置为ng-model变量

Angular JS: Unable to set value to ng-model variable inside ng-repeat

本文关键字:设置 变量 ng-model ng-repeat JS 角度      更新时间:2023-09-26
  1. 我有以下代码工作正常。也就是说,它显示带有国家/地区名称的组合框,当我在组合框中选择国家/地区时,它会打印"过滤数据:">

        <span class="input-group-btn">
            <button type="button" class="btn btn-default" ng-click=""><i class="glyphicon glyphicon-globe"></i>&nbsp;Country</button>
            <select class="form-control" style="width:200px;" ng-model="filters" ng-options="country.name for country in countries"></select>
        </span>
        Filter Data: {{filters}}
    </div>
    

    在上面的代码中,我使用 ng-init="filters"(不是通过控制器(声明了一个范围变量,并且我正在尝试将选定的组合项设置为此变量。它工作正常。

  2. 然后,我用以下ng-repeat代码替换了上面的代码:

        <span ng-repeat="filter in filterList">
            <button type="button" class="btn btn-default" style="width:75px" ng-click="">{{filter.filterLabel}}</button>
            <span ng-switch="filter.filterType">
                <span ng-switch-when="combo"><select class="form-control" style="width:200px" ng-model="filters" ng-options="country.name for country in filter.countryData"></select></span>
            </span>
        </span>
        Filter Data: {{filters}}
    </div>
    

    上面的代码虽然在组合框中显示国家/地区名称,但当我选择一个国家/地区时,它不会在"过滤数据"附近显示任何内容。我认为可能是范围变量"过滤器"在ng-repeat附近不可见(只是一个猜测(,因此也尝试了也不起作用。

问题:

  1. 你能帮我理解为什么ng-model="filters"没有设置范围变量"filters"并让我打印它吗?

  2. 我还想在 ng-model 中动态创建变量名称。类似于ng-model="filters。{{filter.filterType}}".我试过了,但没有得到任何结果。它没有显示{{过滤器}}。在浏览了Stackoverlow上的一些帖子后,我尝试了ng-model="filters。[filter.filterLabel]"。这实际上是通过一些JS错误(说TypeError:无法设置未定义的属性'Country'(,当我在国家组合中选择一个项目时。似乎无法在过滤器中找到国家/地区(这是 [filter.filterLabel] 的结果(。因此,我声明ng模型的方式显然存在一些问题。

使用

上面的代码(我想使用范围变量ng-init="filters"(,您能否帮助我正确为所选项目动态生成ng-model变量名称并能够使用{{filters}}

更新:

这是演示我的问题的小提琴:http://jsfiddle.net/ramarajuv/ag2crnk7/请帮助我纠正它。

提前谢谢大家。

让它工作了。

  1. 首先,在控制器的作用域中创建过滤器变量:

    $scope.filters = {
        "Country":{},
        "President of Country":{}
    };
    
  2. 然后,将ng-model格式化为:

    ng-model="filters[filter.filterMap]