【问题标题】:Give an element different colors with `ng-repeat`使用 `ng-repeat` 为元素赋予不同的颜色
【发布时间】:2018-06-23 06:07:53
【问题描述】:

HTML 逻辑 vs Javascript 逻辑

我想做一些非常简单的事情。根据优先级描述,我想给 td 赋予不同的颜色

此 HTML 是根据票证动态生成的。现在假设我有 10 种类型的描述,html 将开始变得混乱。有没有更好的方法或者可以这样做?

 <tr ng-repeat="ticket in tickets">
                        
   <td class="color-SOMETHING">{{ticket.TICKET_PRIORITY_DESCRIPTION}}</td>

  <tr>

【问题讨论】:

  • 优先级描述是否来自一组固定的可能值?
  • 是的。它们是从数据库中获取的。类似于:高、正常、低、非常低等。
  • CSS 无法检测文本,因此类可能是您唯一的选择。

标签: javascript html css angularjs angularjs-ng-repeat


【解决方案1】:

尝试使用优先级作为类:

<tr ng-repeat="ticket in tickets">
    <td class="color-{{ticket.TICKET_PRIORITY_DESCRIPTION}}">{{ticket.TICKET_PRIORITY_DESCRIPTION}}</td>
</tr>

然后,在你的 css 中添加:

.color-high {
   background-color: red;
}

.color-low {
   background-color: green;
}

.color-normal {
   background-color: yellow;
}

等等,每个优先级对应一个。

【讨论】:

    【解决方案2】:

    像这样基于票据属性应用条件类

    <tr ng-repeat="ticket in tickets">
    
       <td class="color-SOMETHING" ng-class="{'redColor': ticket.TICKET_PRIORITY_DESCRIPTION=='high', 'yelloColor': ticket.TICKET_PRIORITY_DESCRIPTION=='medium', 'blueColor': ticket.TICKET_PRIORITY_DESCRIPTION=='low'}">{{ticket.TICKET_PRIORITY_DESCRIPTION}}</td>
    
      <tr>
    

    CSS

    .redColor {
      background-color: red;
    }
    .yelloColor {
      background-color: yellow;
    }
    .blueColor {
      background-color: blue;
    }
    

    【讨论】:

    • 这没有错。但是更多的条件会使模板变得更加混乱。
    • 是的,我也喜欢另一个答案 :) 我想知道为什么当我在我的代码中多次使用类似的东西时我没有想到它! :(
    猜你喜欢
    • 2018-10-17
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2013-05-22
    • 2019-03-05
    相关资源
    最近更新 更多