select 和 ng-option 过滤器

select and ng-option filters

任何人都可以微调我的过滤器吗?我有 3 个 ng-option 指令,每个指令都从之前的指令中筛选出来。当 select 元素是 'returning' 整数时,我得到了这个工作,但我现在需要将它们绑定到一个对象。

这是我的设置:

formData.divisions = {'Open', 'Mixed'}
formData.teams =
    [{
        "id": 1,
        "division":"Open",
        "name":"Team 1"
    },{
        "id": 2,
        "division":"Open",
        "name":"Team 2"
    },{
        "id": 3,
        "division":"Mixed",
        "name":"Team 3"
    }]

<select
    ng-model="formData.division"
    ng-options="division for division in divisions"></select>

<select
    ng-model="formData.team"
    ng-options="team as team.name for team in teams track by team.id | filter:{division:formData.division}"></select>

<select
    ng-model="formData.opponent"
    ng-options="team as team.name for team in teams | filter:formData.division | filter:{team:'!'+formData.team}"></select>

第二个和第三个 select 个元素不太正确。我敢肯定他们很接近。

第一个 select 只是列出了部门。

第二个 select 只想列出 selected 部门内的团队。

第 3 个 select 想做与第 2 个相同的事情,但也不显示来自第 2 个 select 的 selected 团队。

谢谢!

所以这行得通。第二个和第三个 select 元素都被第一个过滤。第三个也会过滤掉第二个 selected 的内容。

<select
    ng-model="formData.division"
    ng-options="division for division in divisions"></select>

<select
    ng-model="formData.team"
    ng-options="team as team.name for team in teams | filter:formData.division | track by team.id"></select>

<select
    ng-model="formData.opponent"
    ng-options="team as team.name for team in teams | filter:formData.division | filter:{id:'!'+formData.team.id} track by team.id"></select>

作为旁注,可能对其他尝试做类似事情的人有所帮助。我想用用户在上次访问时 selected 的内容预先填充选项。对象被缓存。帮助我做到这一点但也有点麻烦的是 'track by'。这 post 帮助了 https://coderwall.com/p/p-glog/angularjs-using-trackby-with-filters-in-an-ng-repeat