Angularjs - ng-class上的不同表达类型

时间:2015-03-04 21:39:06

标签: angularjs

我有一个可以做两件事的ng-class。可以说颜色是红色,类型是宝马。下课 1)创建/使用车红类 2)创建/使用car-bmw类

ng-class="['car-' + car.color, 'car-' + car.type]"

但是在同一个ng-class中,我还想要第三个表达式,即如果“isError”具有真值,则类.error必须在CSS中执行某些操作。像这样:

 ng-class="{error: isError}"

如何将这两种不同类型的表达结合起来?

我试试这个但没有成功:

ng-class="['car-' + car.color, 'car-' + car.type, 'error': isError]"

非常感谢!

2 个答案:

答案 0 :(得分:3)

评论中的任何解决方案,或者:

ng-class="getClasses(car, isError)"

$scope.getClasses = function (car, isError) {
    var res = ['car-' + car.color, 'car-' + car.type];
    if (isError) {
        res.push('error');
    }
    return res;
}    

答案 1 :(得分:0)

根据documentation

  

该指令以三种不同的方式运作,具体取决于哪种方式   表达式求值的三种类型:

     
      
  1. 如果表达式求值为字符串,则字符串应为1或   更多以空格分隔的类名。

  2.   
  3. 如果表达式求值为数组,则为数组的每个元素   应该是一个字符串,它是一个或多个以空格分隔的类名。

  4.   
  5. 如果表达式求值为一个对象,则为每个键值对   对于具有真值的对象,相应的键用作a   班级名称。

  6.   

意思是,你不能在上面的单个表达式语法2中组合(在你的情况下,2& 3)。