根据循环中的选定项筛选选择列表项

时间:2014-06-11 18:55:04

标签: javascript html angularjs angularjs-ng-repeat

我在一个表上有一个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;项目不应该出现在选择列表中。

Example of select list within ngRepeat

我根本不知道如何为此编写过滤器。任何帮助将不胜感激,我希望这是有道理的。 :)

提前致谢!

1 个答案:

答案 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,从而将其过滤掉。