我在一个表上有一个ngRepeat指令,它遍历一些项目,每个项目都有一个Name字段。
我在此循环中的表格单元格中有一个选择列表,该选择列表包含名称列表。
示例父列表( SelectedPeople ):{" Name":" asdfasdfasdf" }
每个选择列表(人):[{"姓名":" John Smith" },{"姓名":"简史密斯" },{"姓名":"比尔盖茨" },{"姓名":" asdfasdfasdf" }]
<table>
<tr ng-repeat="selectedPeople in SelectedPeople">
<td>
<select ng-model="selectedPeople.SelectedPeople.Name" ng-options="people.Name as people.Name for people in People"></select>
</td>
</tr>
</table>
(忽略上面json中的语法错误,它只是一个例子)
如何将选择列表过滤为不添加表格中已选择的项目?
示例:(在下图中)&#34; asdfasdfasdf&#34;项目不应该出现在选择列表中。
我根本不知道如何为此编写过滤器。任何帮助将不胜感激,我希望这是有道理的。 :)
提前致谢!
答案 0 :(得分:1)
这样的事情应该有效:
$scope.inListFilter = function(person) {
return (SelectedPeople.indexOf(person) !== -1);
}
然后是html:
<select ng-model="selectedPeople.SelectedPeople.Name" ng-options="person.Name as person.Name for person in People | filter:inListFilter"></select>
您将对象传递给过滤器函数,然后对其运行测试并返回true或false,具体取决于您是否要将其过滤掉。这将检查它是否在列表中,如果是,则返回false,从而将其过滤掉。