通过布尔属性使用"track by"过滤Angular 1.2 ng-repeat

Ada*_*tle 78 angularjs angularjs-ng-repeat

我正在尝试根据布尔属性的值过滤一些列表项,但无论我做什么,总是会显示整个列表.我尝试过的一些东西已经破碎,没有任何东西显示出来,但这既不在这里,也不在那里.我不能按要求让我的过滤工作:

$scope.attendees = [
     {"firstname":"Steve",    "lastname":"Jobs",  "arrived":true,  "id":1}
    ,{"firstname":"Michelle", "lastname":"Jobs",  "arrived":false, "id":2}
    ,{"firstname":"Adam",     "lastname":"Smith", "arrived":true,  "id":3}
    ,{"firstname":"Megan",    "lastname":"Smith", "arrived":false, "id":4}
    ,{"firstname":"Dylan",    "lastname":"Smith", "arrived":false, "id":5}
    ,{"firstname":"Ethan",    "lastname":"Smith", "arrived":false, "id":6}
];
Run Code Online (Sandbox Code Playgroud)

使用以下ng-repeat过滤:

<ul>
    <li ng-repeat="person in attendees track by person.id | filter:arrived:'false'">
            {{person.lastname}}, {{person.firstname}}
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我觉得我已经尝试过我可以找到的每个排列,其中大多数来自各种StackOverflow搜索结果:

  • filter:'arrived'
  • filter:arrived
  • filter:'person.arrived'
  • filter:person.arrived
  • filter:{arrived:true}
  • filter:{arrived:'true'}
  • filter:{person.arrived:true}
  • filter:{person.arrived:'true'}

我也尝试过创建自定义过滤器功能:

$scope.isArrived = function(item) {
    return item.arrived;
};
Run Code Online (Sandbox Code Playgroud)

并应用它:

  • filter:isArrived
  • filter:'isArrived'
  • filter:{isArrived(person)}
  • filter:isArrived(person)
  • filter:'isArrived(person)'

这些似乎都不起作用.我错过了什么?

这是一个展示我问题的plnkr.

Gru*_*nny 245

轨道需要在表达式的末尾:

<li ng-repeat="person in attendees | filter: {arrived: false } track by person.id">
Run Code Online (Sandbox Code Playgroud)

  • 如何翻转烦人,浪费30分钟.我希望它使用`trackBy:..`并且通常"像其他一切一样". (3认同)