我在这里有几个不同的工作,但我正在努力如何把他们所有在一起。我目前有一个按健康状态排序的元素列表(0到100之间的值)。HSL RGB自动颜色与AngularJS
对于每个元素,我想根据其健康状态对背景着色。所以,status = 0意味着我有一个红色的填充颜色;状态= 50黄色;状态= 100绿色。
在像D3,我将完成与下面的代码(这是一个伟大的招,顺便说一句):
/*normalize input between 0 and 100 to hsl color scale -- so 0=0 and 100 = 120, where hue=0 is red and hue=120 is green */
var hueScale = d3.scale.linear().domain([0,100]).range([0,120]);
.style("fill", function(d){
var hslColor = 'hsl(' + hueScale(d.status)) + ', ' + (100) + '%, ' + (50) + '%, ' + (1) + ')';
return d3.rgb(hslColor).toString().toUpperCase(); })
但在这里,我负责的一个正常的列表,而不是一个d3图形。
,我也做了,在过去使用纳克级的指定动态颜色:
$scope.getClass = function(status) {
if (status == (100)) {
return "good-feed";
} else {
return "bad-feed";
}
};
和
ng-class="[getClass(item.status)]"
我需要这些技术都结合起来。我认为使用ng-class与我所需要的类似方式是我需要做的,但我不知道如何让颜色更改函数在不必要的复杂的情况下工作。
有什么想法?
编辑 无论我当前的代码段以上工作,但问题是我希望能够通过在0和100之间的所有状态值迭代,而不是仅仅处理一个非此即彼的情况。
例如:
- 项目1与23状态(约颜色:橙色)
- 项目2与45的状态(约颜色:黄橙色)
- 项目3与
- 项目4与99的状态(约颜色:绿色)
等等:67(黄绿约色)的状态。现在,我可以写我的色彩功能NG-类看起来像这样(更新:这不起作用):
$scope.getClass = function(status) {
if (status <= (10)) {
return "dark-red";
} else if (10 < status <= 20){
return "red-orange";
// continue pattern for all intervals until 100 is reached
} else {
return "undefined-grey";
}
};
但手动经历一样,每个价值似乎笨重。有没有什么方法可以使这个更平滑(类似于D3解决方案)?
权利 - 这肯定适用于存在“无论 - 或”情况。我会确保将我的问题更新得更清楚。这不是我要做的。 我的当前代码片段上面的工作(事实上,我上面的解决方案给出了与你的相同的结果),但问题是我想能够遍历0和100之间的所有状态值,而不仅仅处理 - 或情况。 例如: 项目1,状态= 23(颜色:橙色) 项目2,状态= 45(颜色:黄橙色) 项目3,状态= 67(颜色:黄 - 绿) 项目4,状态= 99(色: 绿色) – KateJean