javascript - Angular ngClass 幽灵类

标签 javascript angularjs ng-class

我正在使用 Material Design 图标(可能不相关)使用 ngClass 进行简单的类切换。这是一个例子:

<button ng-click="toggle = !toggle">
  <i class="mdi" ng-class="{'mdi-filter': toggle, 'mdi-filter-remove': !toggle}"></i>
</button>

由于某种原因它不起作用,“mdi-filter-remove”类将在 !true 评估时被删除。因此,为了测试,我将类更改为“mdi-filter-outline”。有了这个类(class),它就可以正常工作了!我只改变了类(class),如果我把前一个类(class)放回去,它就会再次停止工作。最奇怪的是,在切换到“mdi-filter-outline”类之前,“mdi-filter-remove”类会瞬间闪烁。

如果我为切换设置断点并开始单击“跳过下一个函数调用”,我确实会在单击几下后看到“mdi-filter-remove”,就在执行 angular.js 中的第 17286 行之后:

fn(value, ((last === initWatchVal) ? value : last), current);

该类没有在项目中的任何地方使用,我用atom搜索了整个项目,没有匹配!它从哪里来?

请帮忙!

最佳答案

你的项目中有ngAnimate吗?如果这样做,则使用 ng-class 添加和删除类导致在幕后添加和删除一些特殊类,以便与过渡动画一起使用。这些特殊类之一是带有 -remove 的类。后缀。例如,如果您有一个名为 my-class 的类您使用 ng-class 添加和删除,然后是类 my-class-addmy-class-remove每当元素转换时,也会与它们一起显示。这就是为什么你会看到它一瞬间。

所以,你应该重命名你的类。 -remove后缀与 Angular 自动执行的操作相冲突。

关于javascript - Angular ngClass 幽灵类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38730482/

相关文章:

javascript - Angularjs [$rootScope :inprog] inprogress error

angularjs - 如何根据ng-change更新ng-class?

javascript - Angular JS 重定向到模块配置中的页面

javascript - $watch 没有像预期的那样触发多次

javascript - 无法使用扩展运算符

javascript - 从 jquery datepicker 选择日期后关闭 jquery 对话框

javascript - AngularJS 警报上的 ng-show

javascript - 通过选择多个或单个复选框来过滤数据,而不选择它应该在 angularjs 中显示所有结果

javascript - AngularJS:根据单元格值更改动态生成的表中的单元格类

javascript - AngularJS 将类应用于事件的父元素?