AngularJS 具有扩展的动态样式 class

AngularJS dynamic styling with extended class

我正在尝试显示一个状态标签,该标签将包含不同的背景颜色和文本,具体取决于 AngularJs 中的状态(例如 'New' = 绿色,'Active' = 黄色)。我目前有一个 css 文件

.status {
    padding: 4px 8px;
    font-size: 12px;
    line-height: 12px;
    color: white;
    border-radius: 16px;
}

.status.new {
    background-color: #673AB7;
    border: 1pt solid #673AB7;
}

.status.active {
    background-color: #4CAF50;
    border: 1pt solid #4CAF50;
}

在我的 html 中,我引用了多个 class 如下所示

<span class="status pull-right">{{statusProperty}}</span>

是否可以将 class 与 ng-class 结合使用扩展的 classes 或可以通过 ng-style 实现?

是的,您可以将 ng-classclass

一起使用

在你的情况下它会是这样的:

<span class="status pull-right" ng-class="{'new': <condition_for_being_green>, 'active': <condition_for_being_yelow>}">{{statusProperty}}</span>

这将使您的元素通过 class 属性具有 类 statuspull-right 并具有 new | active 类 当分别满足绿色和黄色条件时。

这意味着该元素将具有 类

  • status pull-right new 如果 <condition_for_being_green> 为真
  • status pull-right active 如果 <condition_for_being_yellow> 为真
  • status pull-right new active 如果 <condition_for_being_green><condition_for_being_yellow> 为真
  • status pull-right 如果 <condition_for_being_green><condition_for_being_yellow> 为假

是的,您可以将 classng-class 应用于同一个元素,如 the reference 所述。唯一要注意的是,当还存在 ng-class 时,避免在 class 属性中使用内插表达式。

此外,考虑到可重用性和您已经编写了所需的 class 的事实,当然最好使用 CSS class 而不是内联样式。