首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于$index的Angular不更新ngclass

基于$index的Angular不更新ngclass
EN

Stack Overflow用户
提问于 2016-01-12 22:55:35
回答 2查看 136关注 0票数 0

我有一个滑块(使用angular-material),它是控制器的变量(avm.itemsIndex),它在ng-repeat列表的ng-class中使用。

因此,ng-repeat中的每一项都有:

代码语言:javascript
复制
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等。

似乎并不是所有的item类都会在avm.itemsIndex发生变化时进行更新。

有谁知道我如何解决这个问题,甚至是如何调试它?

EN

回答 2

Stack Overflow用户

发布于 2016-01-12 23:04:58

要调试,只需使用{{ avm.itemsIndex == $index+2 }}转储值,我经常使用controller作为语法。你有没有试过把avm.itemsIndex变成一个函数而不是一个属性?在使用函数时,最好使用绑定的joy。

因此,不是:

代码语言:javascript
复制
this.itemsIndex = 5;

您将拥有:

代码语言:javascript
复制
this.itemsIndex = function() {
    return 5;
}

在你的HTML中:

代码语言:javascript
复制
avm.itemsIndex() === $index+1; // notice parantheses
票数 0
EN

Stack Overflow用户

发布于 2016-04-12 16:25:38

最终起作用的是在更新tag类时设置了一个轻微的超时(20ms)。这似乎是一个浏览器问题,而不是一个角度问题,而且与更新标签属性太快有关

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34746868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档