角JS-类的复杂(Complex angular js ng-class)

2019-07-04 05:10发布

我有分量和有问题的CSS类设置它。 我想它总有一类“盒子”,再有由指令“类”的说法,一个条件类“迷你”指定的其他类。

从概念上讲我想达到什么是这样的:

<div class="box {{class}}" data-ng-class="{mini: !isMaximized}">
...
</div>

问题是,当我设置类HTML属性,省略了NG-class属性。 如何使在不改变控制我的示例工作? 它甚至有可能,还是应该设置类控制器,而不是(我想避免的)?

Answer 1:

我需要的地方之一是$范围推导和其他人的文字类的多个类。 由于从安德烈提示,以下为我工作。

<h2 class="{{workStream.LatestBuildStatus}}" 
    ng-class="{'expandedIcon':workStream.isVisible,  'collapsedIcon':!workstream.isvisible}">{{workStream.Name}}</h2>


Answer 2:

一个快速的解决办法是定义NG-class属性里面的框类:

<div data-ng-class="{mini: !isMaximized, box: true}"></div>

如果你想包括范围变量为一类,不能使用纳克级:

<div class="{{class}} box {{!isMaximized && 'mini' || ''}}">

角表达不支持三元运算符,但它可以效仿这样的:

条件&&(回答如果真)|| (如果回答错误)



Answer 3:

编辑:对角的较新版本看到Nitins答案 ,因为它是最好的一个大气压

对我来说,这个工作(我工作的AngularJS v1.2.14的时刻,所以我想1.2.X +应该支持这个,不知道的更早版本):

<div class="box" data-ng-class="{ {{myScopedObj.classesToAdd}}: true, mini: !isMaximized }"></div>

我换成你的{{class}}{{myScopedObj.classesToAdd}}表明任何范围的变量,甚至有点复杂对象可以采用这种方式。

所以,每DIV元件装箱这种方式将具有“框”类,并且包含的任何类myScopedObj.classesToAdd (使用纳克重复和阵列中的每个元素时有用需要具有施加不同的类),它会具有“迷你”类,如果!isMaximized



Answer 4:

另一种方式来做到这一点没有双花括号并包括范围的变量,具有角V1.2 +测试。

<div ng-class="['box', 
                aClass, 
               {true:'large': false: 'mini'}[isMaximized]]"></div>

这也是相当不错的,因为变量可以使用不同类型的指标在不增加复杂性使用ternaries。 它也可以删除任何需要的否定;) 这里是一个小提琴链接



Answer 5:

您可以使用下面给出简单的表达

ng-class="{'active' : itemCount, 'activemenu' : showCart}"


文章来源: Complex angular js ng-class