4

我有一个在控制器中设置类的数组(必须是这种方式,它是从页面的元模板中读取的)。我还希望将条件类应用于同一元素。可能吗?

编辑,更多信息:我的 html 元素具有源自两个来源的类 - 一个是由控制器创建的一组类(它们由我的代码之外的服务提供,我不能将它们硬编码在视图中)。另一个来源是条件的输出(例如:if "$scope.activeElement === name_of_this_element, add 'active' class)。
在 ng-class 指令中,我不能对未指定的类列表使用对象表示法(第一个来源)我必须对条件类使用对象表示法。

编辑:找到了解决方案(见下文)。

4

4 回答 4

8

另一种选择是以这种方式编写一个 ng-class

<div ng-class="[item.class, item.errorClass, item.locked ? 'locked-item' : '']"></div>
于 2015-07-31T14:37:09.553 回答
4

我找到了一个解决方案 - 我将“固定”类放在常规类属性中(首先将该字符串转换为数组)和 ng-class 对象中的条件类,如下所示:

<td ng-repeat="cell in row.cells" class="{{cell.cssClass}}" ng-class="{active: condition}">
于 2013-12-10T09:18:49.933 回答
0

您存储了一个类名称数组的事实与此处无关。

HTML

<div ng-class="arrOfClasses[condition]"></div>

app.controller('myCtrl', function($scope) {
    $scope.arrOfClasses = ['class1', 'class2', 'class3'];

    $scope.condition = 1; // what ever number here
});
于 2013-12-09T20:47:57.143 回答
0

一个好方法,并且避免在类中使用 {{}} 将只使用一个表达式:

<td ng-repeat="cell in row.cells" ng-class="(condition ? 'active ' : '') + cell.cssClass">
于 2014-08-08T16:21:22.247 回答