【发布时间】:2015-12-06 11:05:09
【问题描述】:
出于我的目的,我定义了一个表,其中包含一个名为“差异”的列。 “差异”列包含如下数字:
Difference | ...
0.02 | (yellow)
0.01 | (yellow)
0 | (green)
-0.06 | (green)
-0.13 | (green)
0.06 | (red)
0.09 | (red)
...
如下是视图的代码:
<tr ng-repeat="report in repos.slice(((currentPage-1)*itemsPerPage), ((currentPage)*itemsPerPage))">
<td>{{ report.datum | date:'dd.MM.yyyy' }}</td>
<td ng-repeat="row in rowOptions" ng-class="row.rowClass">
{{ report[row.rowTitle] }}
</td>
</tr>
然后是颜色的css定义:
.colGreat { background-color: #11a001; } // ok => <= 0
.colNormal { background-color: #ffd800; } // normal => between 0,01 and 0,03
.colBad { background-color: #E60014; } // bad => >= 0,04
在我的 Ctrl 中,列定义在一个数组中:
$scope.rowOptions = [
{ rowTitle: 'name' },
{ rowTitle: 'produce', rowClass: 'num-right' },
{ rowTitle: 'consume', rowClass: 'num-right' },
{ rowTitle: 'difference', rowClass: 'num-right ' + $scope.getColumnColor }
];
$scope.columnColor = ['colBad', 'colNormal', 'colGreat'];
目前为了测试,我正在定义一个静态解决方案。你怎么能看到整列是绿色的,但我想在行有什么样的数字之后显示具有相应颜色的列。
我该如何定义这种方法?
编辑:
我已经尝试过这种方式,但如果第一项具有例如 0.01,那么所有行都是黄色的,即使我使用的是 forEach()。
angular.forEach($scope.repos, function (value) {
var numDiff = parseFloat(value.Difference, 10);
diffNumber.push(numDiff);
});
angular.forEach(diffNumber, function (val) {
if (val <= 0.00) {
return $scope.getColumnColor = 'colGreat';
}
if (val >= 0.01 && val <= 0.03) {
return $scope.getColumnColor = 'colNormal';
}
if (val >= 0.04) {
return $scope.getColumnColor = 'colBad';
}
});
【问题讨论】:
-
看看您是否可以创建一个 plnkr,以便其他人能够更轻松地提供帮助
-
你的意思是this?
-
我会把它作为答案发布。
标签: javascript angularjs css html-table angularjs-controller