选择和ng选项过滤器

时间:2015-01-03 15:19:49

标签: javascript angularjs ng-options

有人可以微调我的过滤器吗?我有3个ng-option指令,每个指令都来自前一个。当选择元素返回'一个整数但我现在需要它们绑定到一个对象。

这是我的设置:

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>

第二和第三选择元素并不完全正确。他们关闭了我确定。

第一个选择只列出分部。

第二选择只想列出所选部门内的团队。

第3选择想要与第2选择相同,但也不会从第2选择显示所选团队。

谢谢!

1 个答案:

答案 0 :(得分:0)

所以这很有效。第2和第3选择元素都被第1个过滤。第三个也过滤了第二个中选择的任何内容。

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

作为旁注,可能对其他试图做类似事情的人有所帮助。我想用用户在之前访问时选择的内容预先填充选项。该对象被缓存。帮助我做到这一点的东西也有点令人不安的是“追踪”。这篇文章帮助https://coderwall.com/p/p-glog/angularjs-using-trackby-with-filters-in-an-ng-repeat