在 Angular 模板中设置类值

Posted

技术标签:

【中文标题】在 Angular 模板中设置类值【英文标题】:Setting class values in Angular template 【发布时间】:2014-04-25 09:41:31 【问题描述】:

我是一个 Angular 新手,我正在努力解决我认为非常简单的事情。

我有一个模板用于我的应用程序的只读版本的表单。此模板显示将根据其值设置样式(文本/背景颜色)的状态字段,例如

'新问题' - 橙色 '进行中' - 绿色 '过期' - 红色

等等……

我的 css 是这样的;

.status-bar padding: 3px; border: solid 1px #333
.new-issue background-color: orange; color: #000
.in-progress background-color: green; color: #fff
.overdue background-color: red; color: #fff

问题状态字段可通过控制器获得,我使用类似这样的代码来显示它。

<div class="status-bar">issue.status</div>

一切正常。

然后我天真地尝试简单地将类名插入为表达式,例如

<div class="status-bar issue.status">issue.status</div>

认为这会给我这样的输出..

<div class="status-bar overdue">overdue</div>

但它不起作用。我查看了 ng-class 指令和其他选项,但无法解决。

理想情况下,我需要一个解决方案,允许我根据值附加/插入类名(而不是像 ng-class 那样的真/假)。所以我希望我的输出 html 如下所示......

<div class="status-bar in-progress">In Progress</div>

<div class="status-bar new-issue">New Issue</div>

<div class="status-bar overdue">overdue</div>

等等……

状态值的范围可能会改变,所以我的类名必须按照上述模式计算

例如,

<div class="status-bar another-status">Another Status</div>

所以我需要一种方法来连字符并小写我的 issue.status 值,然后将其添加为类名。我认为指令是前进的方向,这将是理想的,因此我可以在其他视图中使用它。

这在 jQuery 等中很容易做到……但我看不到 'Angular' 的方法?!

非常感谢您提供的任何帮助...

【问题讨论】:

【参考方案1】:

ng-class自定义过滤器 是您正在寻找的...

HTML

<h1 ng-class="class1">class1 | titleCase</h1>

JS

app.filter('titleCase', function () 
  return function (input) 
    var words = input.split('-');
    for (var i = 0; i < words.length; i++) 
      words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1);
    
    return words.join(' ');
  
);

这里正在工作PLUNKER...

【讨论】:

【参考方案2】:

ng-class 应该可以工作:

<div class="status-bar" ng-class="issue.status">issue.status</div>

工作小提琴:http://jsfiddle.net/w2SFr/2/

【讨论】:

谢谢,但这只允许我使用问题状态“原样”作为类名。我需要将“进行中”等状态值连字符并小写为“进行中” 只需添加一个自定义过滤器就可以了.. 很简单。【参考方案3】:

您正在寻找的可能是http://docs.angularjs.org/api/ng/directive/ngClass。你可能还想看看AngularJS ngClass conditional

【讨论】:

以上是关于在 Angular 模板中设置类值的主要内容,如果未能解决你的问题,请参考以下文章

如何在角度2中设置模板网址

如何使用angular4在组件标签中设置粗体和斜体属性

如何在 Angular UI 中设置手风琴标题的类/样式

idea中设置类添加删除线条

在 scikit-learn 的逻辑回归中设置类权重的数学原理是啥?

如何在 DecisionTreeClassifier 中设置类权重以进行多类设置