我正在动态生成组合框,每次都需要将不同的集合传递给ng-repeat。我该怎么做?
<div ng-repeat="choice in $ctrl.inputFilterRows">
<md-select ng-model="choice.name">
<md-option ng-repeat="filter in $ctrl.filters" value="{{filter.value}}" >
{{filter.value}}
</md-option>
</md-select>
</div>
试图从控制器进行设置,但没有起作用:
self.inputFilterRows[0].filters = [{ value: 'June' }, { value: 'July' }, { value: 'August' }];
答案 0 :(得分:1)
一种想法是在多个ng-if
元素上使用md-select
并根据适合您的条件决定启用哪个元素。
另一种方法是将一个$scope
变量链接到单个ng-repeat
选择,但是您随时可以为该$ scope变量集合分配新值。这将迫使作用域重绘,并且ng-repeat
现在将使用新的集合值。
第二个可能更清洁。
编辑:
基于下面评论中提供的更好的解释,我现在意识到您想要一组选择,每个选择都有自己的选择。
要实现类似的目的,我建议使用一个数组数组,其中每个对象都代表一个选择,然后其内容就是该选择的选项。
$scope.selectArray = [
{ name: 'colours', filters: [{ value: 'black' }, { value: 'red' }, { value: 'blue' }] },
{ name: 'months', filters: [{ value: 'January' }, { value: 'February' }, { value: 'March' }] }
];
现在,您可以让ng-repeat
遍历selectArray
(在selectArrays中进行选择)以创建选择,然后每个包含一个ng-repeat
以遍历{{1 }}(在select.filters中过滤)
我不会编写确切的代码,因为您看起来好像知道自己在做什么,而且我敢肯定,您可以轻松地将它们自己组合在一起。
如果要更改特定选择的数据集,可以执行以下操作:
select.filters
或
$scope.selectArray[1].filters[0].value = 'December';