【问题标题】:How can I use AngularJS filter in ngClass?如何在 ngClass 中使用 AngularJS 过滤器?
【发布时间】: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等)中使用过滤值的正确方法是什么。

【问题讨论】:

标签: angularjs filter angularjs-filter


【解决方案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 " stackoverflow.com/a/14644299/1702919
【解决方案2】:

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

ng-class="{ 'has-error': (login.form | validField:'username') }"

添加括号后,它起作用了。

【讨论】:

    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多