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

Javascript 根据循环中的选定项筛选选择列表项,javascript,html,angularjs,angularjs-ng-repeat,Javascript,Html,Angularjs,Angularjs Ng Repeat,我在一个表上有一个ngRepeat指令,它循环遍历一些项,每个项都有一个Name字段 我在这个循环的一个表单元格中有一个选择列表,该选择列表有一个名称列表 示例父列表(SelectedPeople):{“Name”:“asdfasdfasdf”} 每个选择列表(人):[{“姓名”:“约翰·史密斯”},{“姓名”:“简·史密斯” },{“姓名”:“比尔·盖茨”},{“姓名”:“asdfasdfasdf”}] (忽略上面json中的语法错误,这只是一个示例) 如何筛选选择列表,使其不添加表中已选

我在一个表上有一个ngRepeat指令,它循环遍历一些项,每个项都有一个Name字段

我在这个循环的一个表单元格中有一个选择列表,该选择列表有一个名称列表

示例父列表(SelectedPeople):{“Name”:“asdfasdfasdf”}

每个选择列表():[{“姓名”:“约翰·史密斯”},{“姓名”:“简·史密斯” },{“姓名”:“比尔·盖茨”},{“姓名”:“asdfasdfasdf”}]


(忽略上面json中的语法错误,这只是一个示例)

如何筛选选择列表,使其不添加表中已选择的项目

示例:(下图中)选择列表中不应出现“asdfasdfasdf”项

我只是不知道如何编写这个过滤器。任何帮助都将不胜感激,我希望这是有意义的。:)


提前谢谢

像这样的方法应该会奏效:

$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>

将对象传递给filter函数,然后对其运行测试,并根据是否要将其过滤掉返回true或false。这将检查它是否在列表中,如果在列表中则返回false,从而过滤掉它

<select ng-model="selectedPeople.SelectedPeople.Name" ng-options="person.Name as person.Name for person in People | filter:inListFilter"></select>