AngularJS:使用'track by'禁用ng-repeat中的过滤器

AngularJS: Using 'track by' disables filter in ng-repeat

本文关键字:ng-repeat 过滤器 禁用 track 使用 AngularJS by      更新时间:2023-09-26

由于我在ng-repeat中实现了track by,它阻止了我的过滤器执行。例如,track by $index像一个魅力,但当我试图添加一个输入字段来搜索我的对象时,什么也没有发生,控制台也没有显示任何错误。

这是我的html:

<input type="text" ng-model="searchText">
<div ng-repeat="message in messages.collection track by $index | filter : searchText">
  <p>{{message.text}}</p>
</div>

我还创建了一个Plunkr,以显示两种情况(有和没有track by)。

我想知道这是一个语法问题或其他东西,以解决它。

您需要在表达式末尾添加track by。查看这个工作活塞

代码:

<div ng-repeat="message in messages.collection | filter : searchText track by $index">
    <p>{{message.text}}</p>
</div>

请尝试在过滤器上跟踪

message in messages.collection  | filter : searchText track by $index

如https://docs.angularjs.org/api/ng/directive/ngRepeat

所示最好