最好的条件应用类的方法是什么?

32 浏览
0 Comments

最好的条件应用类的方法是什么?

假设你有一个数组,在一个带有每个元素的liul中呈现,并且控制器上有一个名为selectedIndex的属性。在AngularJS中,最好的方法是为具有索引selectedIndexli添加类是什么?

我目前正在手动复制li代码,并将类添加到一个li标签中,并使用ng-showng-hide仅显示每个索引的一个li

admin 更改状态以发布 2023年5月21日
0
0 Comments

ng-class支持一个表达式,其必须评估为以下之一:

  1. 由空格分隔的类名字符串,或
  2. 类名数组,或
  3. 类名到布尔值的映射/对象。

因此,使用第3种形式,我们可以简单地写成

ng-class="{'selected': $index==selectedIndex}"

另请参阅如何在AngularJS中有条件地应用CSS样式? 的更广泛的答案。


更新:Angular 1.1.5添加了对三元运算符的支持,因此如果该构造对您更熟悉:

ng-class="($index==selectedIndex) ? 'selected' : ''"

0
0 Comments

如果你不想像我一样在控制器中放置CSS类名,这里有一个我自v1版本之前就在使用的老技巧。我们可以编写一个直接评估所选类名的表达式,无需自定义指令:

ng:class="{true:'selected', false:''}[$index==selectedIndex]"

请注意这是使用冒号的旧语法。

还有一种更好的条件应用类的方法,如:

ng-class="{selected: $index==selectedIndex}"

Angular现在支持返回对象的表达式。该对象的每个属性(名称)现在都被视为一个类名,并根据其值应用。

然而,这些方法在功能上不等同。以下是一个例子:

ng-class="{admin:'enabled', moderator:'disabled', '':'hidden'}[user.role]"

因此,我们可以通过将模型属性映射到类名来重用现有的CSS类,并同时避免将CSS类放入控制器代码中。

0