有条件地应用ng类
Apply ng-class conditionally
我根据某些条件显示图像(即,如果条件1满足,则显示图像1,如果条件2则显示图像2,依此类推)。我正在使用ng-if
。我的代码如下:
<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 form-col-pad customization-grid-data text-left"
ng-if="data.severity==3">
<img src="App/images/Icons/alarm-high.png">
</div>
<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 form-col-pad customization-grid-data text-left"
ng-if="data.severity==2">
<img src="App/images/Icons/alarm-medium.png">
</div>
<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 form-col-pad customization-grid-data text-left"
ng-if="data.severity==1">
<img src="App/images/Icons/alarm-low.png">
</div>
我只显示了一个图像,但我仍然需要写3行代码。如何在这里使用ng-class
,以最大限度地减少编写的代码?
另一种选择是使用ng开关:
<span ng-switch on="data.severity">
<img ng-switch-when="1" src='App/images/Icons/alarm-low.png'>
<img ng-switch-when="2" src='App/images/Icons/alarm-medium.png'>
<img ng-switch-when="3" src='App/images/Icons/alarm-high.png'>
<img ng-switch-default src='default image source'>
</span>
使用ng src动态更改图像的src,然后只需要一次代码:)
<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 form-col-pad customization-grid-data text-left">
<img ng-src="{{img.src}}">
</div>
内部控制器:
if($scope.data.severity == 2){
$scope.img.src = 'App/images/Icons/alarm-medium.png';
} else if($scope.data.severity==1){
$scope.img.src = 'App/images/Icons/alarm-low.png';
}
编辑
正如评论中所指出的,如果在页面上的多个页面上使用,这将不起作用。所以这里有一个替代方案。
<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 form-col-pad customization-grid-data text-left">
<img ng-src="{{ getSeverity(data.severity) }}">
</div>
-
$scope.getSeverity = function(severity){
if(severity == 2){
return 'App/images/Icons/alarm-medium.png';
} else if(severity == 1){
return 'App/images/Icons/alarm-low.png';
}
}
-
作为引导程序代码的一个离题注释,作为一个建议,你实际上可能会在div上丢失很多类。特别是col-sm-1和更高版本。col-xs-1将适用于sm/md/lg。
<div class="col-xs-1 form-col-pad customization-grid-data text-left">
HTML
<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 form-col-pad customization-grid-data text-left">
<img ng-src="{{'App/images/Icons/alarm-' + (data.severity == 1 ? 'low' : (data.severity == 2 ? 'medium' : 'high')) + '.png'}}">
</div>
或
HTML
<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1 form-col-pad customization-grid-data text-left">
<img ng-src="{{getSeveritySrc(data)}}">
</div>
控制器中的JavaScript
$scope.getSeveritySrc = function(data){
var src = 'App/images/Icons/alarm-';
switch(data.severity){
case 1:
src += 'low';
break;
case 2:
src += 'medium';
break;
default:
src += 'high';
break;
}
src += '.png';
return src;
}
或
HTML 中的属性
ng-class="{'low':data.severity == 1,'medium':data.severity == 2,'high':data.severity == 3}"
CSS 示例
.low {
background: green;
}
.medium {
background: yellow;
}
.high {
background: red;
}
或
HTML 中的属性
ng-class="getSeverityClass(data)"
控制器中的JavaScript
$scope.getSeverityClass = function(data){
switch(data.severity){
case 1:
return 'low';
break;
case 2:
return 'medium';
break;
default:
return 'high';
break;
}
}
以及一个JSFiddle来展示它与多个data
的协同工作。
相关文章:
- ng应用程序使脚本无限运行
- Angular ng控制器与ng应用程序冲突
- 在AngularJS中的另一个ng应用程序中使用来自一个ng程序的Cookie值
- 通过共享服务在两个不同ng应用程序中的控制器之间共享数据
- 如何在angularjs中按顺序执行多数据ng应用程序
- 如何在angular js的ng应用程序中以普通的htm显示标签
- 从angular js中的另一个ng应用程序调用方法
- 在全球范围内强制ng严格di,而不仅仅是在ng应用程序级别上
- AngularJS-ng应用程序不工作,如果不是emplty
- 如何使用附加到html标签的嵌套ng应用程序将一个基于angularjs的SPA包含到另一个基于angularjs
- 多个ng应用程序是如何在angular中工作的(为什么会有这样的行为?)
- 为什么一个ng应用程序一次工作
- ng包含不'ng应用程序获得名称时不起作用
- 我该如何命名angular Js的ng应用程序
- angular.bootstrap()-在不需要ng应用程序或ng控制器的情况下引导angular应用程序
- 页面上未显示多个ng应用程序
- 将多个ng应用组合成一个应用
- 多个ng应用程序问题
- Angular.js ng应用程序不仅可用于控制器
- ng应用程序的输出