ng-class为表达式及其逆运算评估true

时间:2015-10-23 11:31:46

标签: angularjs ng-class

我有一个我无法弄清楚的情况。 ng-class正在应用这两个类,即使表达式指定了反逻辑。以下是表示我希望类如何工作的代码:isThinkingnotThinking,但不是两者:

<div class="myWidget" ng-class="{
            isThinking:   vm.isThinking(),
            notThinking: !vm.isThinking()
          }"
</div>

问题是Angular应用这两个类。我不明白为什么。

我调查过:

    只需触发
  • $digest周期?不,导致摘要没有效果
  • isThinking总是返回true还是false,从不定义?确认。
  • 将其中一个类的名称从notThinking更改为isReady会解决吗? (测试可能是一个太模糊的正则表达式匹配)不,这些类仍然同时处于活动状态。
  • 是否完全删除第二个notThinking表达式会导致isThinking类被正确添加和删除?是的,是的。为什么,我不知道。

Angular版本是1.4.6。

当2个表达式显然是反向的时,是否可以想到两个类都处于活动状态的原因?

1 个答案:

答案 0 :(得分:2)

问题是ngAnimate。我没有找到根本原因,但我知道disabling animate解决了这个问题就足够了。此元素未明确设置动画,但ngAnimate会影响所有内容,除非您禁用它。我认为这是对DOM操作进行计时的框架问题。

修正:

link: function (scope, el, attrs) {
  $animate.enabled(el, false)
}