ngRepeat:使用$ index跟踪时过滤器无效

Vig*_*ian 3 javascript angularjs

这是我的HTML

<body>
<div ng-app="repeatdemo" ng-controller="rd">
<input type="text" ng-model="nameSearch" />
<div ng-repeat="x in names track by $index | filter : nameSearch">
{{x }}
</div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的剧本

<script>
var rdapp=angular.module("repeatdemo",[]);
rdapp.controller("rd",function($scope){
$scope.names=['deepu','vicky','hello','hey','vickys'];

});
</script>
Run Code Online (Sandbox Code Playgroud)

当我使用的轨道通过$index in repeat选项时,过滤器不能正常工作,请检查该小提琴和尝试删除track by indexng-repeat

sha*_*ain 10

问题是您正在应用过滤器和轨道的顺序

http://jsfiddle.net/n3xnzvvs/1/

<div ng-repeat="x in names | filter : nameSearch track by $index">
Run Code Online (Sandbox Code Playgroud)


Rud*_*lah 5

如果您查看ngRepeat的文档,您可以在ngRepeat参数的说明中找到它:

例如:项目中的项目 filter:searchText track by item.id是一种模式,可用于将过滤器与跟踪表达式一起应用于项目.

您的ng-repeat指令代码应如下所示:

<div ng-repeat="x in names | filter: nameSearch track by $index">
Run Code Online (Sandbox Code Playgroud)