如何在ngClass中使用AngularJS过滤器?

iol*_*leo 18 filter angularjs angularjs-filter

我正在学习AngularJS并玩教程.

我正在修改教程示例过滤器以返回一些字符串:

angular.module('phonecatFilters', []).filter('checkmark', function() {
  return function(input) {
    return input ? 'true-class' : 'false-class';
  };
});
Run Code Online (Sandbox Code Playgroud)

我想用它ngClass如下:

{{phone.trueVal  | checkmark}} <i ng-class="{{phone.trueVal  | checkmark }}"></i>
{{phone.falseVal | checkmark}} <i ng-class="{{phone.falseVal | checkmark }}"></i>
Run Code Online (Sandbox Code Playgroud)

结果:

true-class <i class="false-class">
false-class <i class="false-class">
Run Code Online (Sandbox Code Playgroud)

现在..而对于简单的视图,过滤器按预期工作..为什么它不适用于ngClass?什么是使用过滤值的正确方法ngClass(和其他类似的ngSrc等).

Kha*_* TO 24

在您的情况下,您应该使用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>
Run Code Online (Sandbox Code Playgroud)

DEMO


Jas*_*son 14

这对我有用.只是盯着AngularJS所以我不确定功能是否作为更新的一部分添加,因为这个问题已经有几年了.

ng-class="{ 'has-error': (login.form | validField:'username') }"
Run Code Online (Sandbox Code Playgroud)

添加括号后,它有效.