【发布时间】:2023-03-14 21:23:01
【问题描述】:
我有一个滑块(使用 angular-material),它与控制器作为变量 (avm.itemsIndex) 相关,该变量用于 ng-repeat 列表上的 ng-class。
所以 ng-repeat 中的每个项目都有:
ng-class="{
active : avm.itemsIndex == $index,
selected : avm.selecting==item.name,
left : avm.itemsIndex == $index+1 ,
left2 : avm.itemsIndex == $index+2,
right : avm.itemsIndex == $index-1,
right2 : avm.itemsIndex == $index-2
}"
因此,任何两个项目都不应该有 .active,因为它们都将 $index 与 avm.itemsIndex 进行比较。任何项目也不应该同时具有 .active 和 .left、.left 2 等
问题是,如果我快速拖动滑块以使其快速连续更新 avm.itemsIndex,那么几个项目将具有 .active,有些可能具有 .active 和 .left、.left2 等。
似乎并非所有项目类都会在 avm.itemsIndex 更改时更新。
有谁知道我如何解决这个问题,甚至调试它?
【问题讨论】:
-
您必须发布更多代码,以便我们检查可能的原因。
-
真的没有更多可展示的了。正如我所说,变量 avm.itemsIndex 绑定到材质滑块。随着滑块的滑动,值会发生变化。该值正在正确更改。每次更改 avm.itemsIndex 时,似乎 ng-class 都不会更新所有项目上的类,特别是如果通过快速滑动滑块来快速连续更改。如果我在视图中转储 {{avm.itemsIndex}} 和 {{$index}} 它们是正确的。问题是 ng-class 没有更新重复中的所有项目类。
标签: javascript angularjs