【问题标题】:ng-class evaluating true for an expression and its inverseng-class 为表达式及其逆计算为真
【发布时间】:2015-10-25 05:08:47
【问题描述】:

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

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

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

我调查过:

  • $digest 循环只需要触发?不,导致摘要无效
  • isThinking 是否总是返回真或假,从不未定义?确认。
  • 将其中一个类的名称从notThinking 更改为isReady 是否解决了这个问题? (测试可能是过于模糊的正则表达式匹配)不,这些类仍然同时处于活动状态。
  • 完全删除第二个notThinking 表达式是否会导致isThinking 类被正确添加和删除?是的,是的。为什么会这样,我不知道。

Angular 版本是 1.4.6。

当两个表达式明显相反时,谁能想到两个类都处于活动状态的原因?

【问题讨论】:

  • 你使用 ngAnimate 吗?没有 ngAnimate 是否会发生错误?不是真正的解决方案,但可能有助于找到问题的原因。
  • 该函数只是检查私有属性的存在。它几乎不可能更简单。 ngAnimate 我应该看看...

标签: angularjs ng-class


【解决方案1】:

问题是ngAnimate。我还没有找到根本原因,但我知道disabling animate 解决了问题就足够了。这个元素没有明确的动画,但是 ngAnimate 会影响一切,除非你禁用它。我认为这是 DOM 操作计时的框架问题。

修复:

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

【讨论】:

    猜你喜欢
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 2016-01-29
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多