我有以下代码正常工作。也就是说,它显示组合框中包含国家名称,当我在组合框中选择一个国家时,它会打印"过滤数据:"
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click=""><i class="glyphicon glyphicon-globe"></i> 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 =&#34;过滤器&#34;声明了一个范围变量。 (而不是通过控制器),我试图将选定的组合项目设置为此变量。它运作良好。
然后我用以下 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>
上面的代码虽然在组合框中显示国家/地区名称,但当我选择一个国家/地区时,它不会显示任何接近&#34;过滤数据&#34;的内容。我认为可能是范围变量&#34;过滤器&#34;在ng-repeat(只是一个猜测)附近是不可见的,因此也尝试了也没有工作。
问题:
你能帮我理解为什么ng-model =&#34;过滤器&#34;没有设置范围变量&#39;过滤器&#39;并让我打印出来?
我还想在ng-model中动态创建变量名。像ng-model =&#34;过滤器。{{filter.filterType}}&#34;。我尝试过但从未得到任何结果。它没有显示{{filters}}。在浏览Stackoverlow上的一些帖子后,我尝试了ng-model =&#34;过滤器。[filter.filterLabel]&#34;。这实际上是通过一些JS错误(当我在国家/地区组合中选择一个项目时,说出TypeError:无法设置属性&#39;未定义的国家/地区)。它似乎无法在过滤器中找到Country(这是[filter.filterLabel]的结果)。因此,我宣布ng-model的方式显然有些不对。
使用上面的代码(我想使用范围变量ng-init =&#34; filters&#34;),你能帮我正确地为所选项目动态生成ng-model变量名称吗?并且能够使用{{filters}}
更新
这是演示我的问题的小提琴:http://jsfiddle.net/ramarajuv/ag2crnk7/ 请帮我纠正。
提前谢谢大家。
答案 0 :(得分:2)
搞定了。
首先,在控制器范围内创建过滤器变量:
$scope.filters = {
"Country":{},
"President of Country":{}
};
然后,格式化ng-model为:
ng-model="filters[filter.filterMap]