Javascript 筛选时使用$index重复ng中应用的条件类不一致

Javascript 筛选时使用$index重复ng中应用的条件类不一致,javascript,angularjs,Javascript,Angularjs,我有一个用输入框过滤的ng repeat。在此列表中,有.active和disabled项。所有内容都正确呈现,但当我使用查询对其进行筛选时,活动和禁用的类都会被弄乱,因为显示的索引已更改 显示问题。您会看到第二行高亮显示(classactiveadded)。现在尝试在输入框中键入“iphone”。第二行将高亮显示,即使它未处于活动状态 我怎样才能避免这种情况,并在我的ng repeat中获得可靠的数据 [编辑] 但是,正确的标签(如果,则由ng生成)即使在过滤时也能正确匹配(再次尝试使用“iP

我有一个用输入框过滤的
ng repeat
。在此列表中,有
.active
disabled
项。所有内容都正确呈现,但当我使用查询对其进行筛选时,活动和禁用的类都会被弄乱,因为显示的索引已更改

显示问题。您会看到第二行高亮显示(class
active
added)。现在尝试在输入框中键入“iphone”。第二行将高亮显示,即使它未处于活动状态

我怎样才能避免这种情况,并在我的
ng repeat
中获得可靠的数据

[编辑]
但是,正确的标签(如果,则由
ng生成)即使在过滤时也能正确匹配(再次尝试使用“iPhone”)…

在某些地方,您使用
标签和设备[$index]
,在某些地方,您使用
项目
item
指向数组中您正在重复的实际项,因此,即使在筛选时,您也会得到您期望的项。我不完全理解您希望代码做什么,但我认为您希望只使用


标签和设备[$index]
使用
ng repeat
中的索引(而不是模型中项目的索引)在模型中进行查找。

这是一个很好的问题。因为每次应用过滤器时,
$index
将根据当前过滤列表进行更改

下面是如何处理它,将过滤列表分配给一个变量,然后$index匹配数据

ng-repeat='item in (filtered_tags_and_devices = (tags_and_devices | filter:{ name: assoc_query }))'
然后将标准更改为

filtered_tags_and_devices[$index].id 

在发布后发现了这个问题,并且经过测试,是的,就是这样!非常感谢。我觉得自己很笨。@SamuelBolduc你应该看看我关于如何修复它的答案,因为原因有点明显。@sza与只使用
项相比,这有什么好处?使用@Jon7 solution按预期工作,我认为您的解决方案对于一个简单的问题更复杂(但我可能错了)…@SamuelBolduc您没有理解它。假设
items
是[a,b,c,d,e],当前的$index是2,那么items[$index]是c,在过滤之后,假设您看到的是[a,d,e],但是对于相同的索引2,您得到的是
c
而不是
e
。(你真的想得到
e
)Jon7的解决方案是完全错误的。这就是为什么在我的解决方案中,我告诉你索引应该与当前过滤列表一致,而不是原始列表。@sza我认为你不理解他的问题。他想从与其关联的实际项目中读取
disabled
属性。你的解决方案让他无缘无故地操纵索引。