如何在 ngClass 中使用 AngularJS 过滤器?
Posted
技术标签:
【中文标题】如何在 ngClass 中使用 AngularJS 过滤器?【英文标题】:How can I use AngularJS filter in ngClass? 【发布时间】:2014-01-17 07:10:30 【问题描述】:我目前正在学习 AngularJS 并在玩教程。
我正在修改教程示例过滤器以返回一些字符串:
angular.module('phonecatFilters', []).filter('checkmark', function()
return function(input)
return input ? 'true-class' : 'false-class';
;
);
我想在ngClass
中使用它,如下所示:
phone.trueVal | checkmark <i ng-class="phone.trueVal | checkmark "></i>
phone.falseVal | checkmark <i ng-class="phone.falseVal | checkmark "></i>
结果:
true-class <i class="false-class">
false-class <i class="false-class">
现在.. 虽然对于简单视图,过滤器按预期工作.. 为什么它不适用于 ngClass?在ngClass
(以及其他类似ngSrc
等)中使用过滤值的正确方法是什么。
【问题讨论】:
它适用于我:jsfiddle.net/s3x2F @OlivérKovács css 规则未应用。jsfiddle.net/ja3h8/1 为什么? jsfiddle.net/Zmetser/ja3h8/3 使用过滤器跳过 ng-class 使用类,或者使用声明性方法:jsfiddle.net/Zmetser/3L3de/1 【参考方案1】:在您的情况下,您应该使用 class
而不是 ng-class
,因为您直接在 html 上呈现类名而不进行评估。
<div ng-controller="MyCtrl">
<i class="phone.trueVal | checkmark ">phone.trueVal | checkmark</i>
<i class="phone.falseVal | checkmark ">phone.falseVal | checkmark</i>
</div>
DEMO
【讨论】:
我不知道为什么它不适用于 AngularJS 教程项目。但我看到它在你的演示中工作,所以我想这一定是我在代码中的某个地方出现了一些愚蠢的错误。 . ngClass 接受一个对象或一个字符串,所以你可以这样做 ng-class=" 'myClass'+item.priority " ***.com/a/14644299/1702919【参考方案2】:这对我有用。只是盯着 AngularJS,所以我不确定该功能是否是作为更新的一部分添加的,因为这个问题已经存在几年了。
ng-class=" 'has-error': (login.form | validField:'username') "
添加括号后,它起作用了。
【讨论】:
以上是关于如何在 ngClass 中使用 AngularJS 过滤器?的主要内容,如果未能解决你的问题,请参考以下文章