Colorir um Div, Span ou ícone Glyph em resposta aos dados

O Problema: Queremos que os recursos no dom tenham uma de 3 cores e queremos que essa cor seja determinada pelos dados.

A Solução: Insira uma string, que por acaso é um nome de classe, na classe CSS no HTML usando Angular.

Nossa abordagem…

O HTML:

No div para o subcabeçalho, fazemos uma chamada de função.

<div class="entry-subheader-box {{ journalEntry.getAcceleration() }}">

Depois que a mágica acontece, se você inspecionar o código com as ferramentas do desenvolvedor, o código lê:

<div class="entry-subheader-box acceleration-neutral">

Vejo? “Aceleração neutra” é alimentado na classe, ao lado de “caixa de entrada-sub-cabeçalho”, que é o estilo do div (sem incluir a cor, que é definida por “aceleração”).

O JS:

A aceleração é um campo em nosso banco de dados. Então, aqui temos uma função que verifica this.acceleration para um valor: -1, 0 ou 1. Quando a aceleração === 1, uma string chamada “aceleração positiva” é retornada, e assim por diante para -1 e 0. Então, se você verificar nossa folha de estilo, verá que temos uma regra CSS / LESS para cada uma dessas strings.

getAcceleration: function() {
if(!this.acceleration) {
return "acceleration-neutral";
}
if(this.acceleration === 1) {
return "acceleration-positive";
}
else if(this.acceleration === -1) {
return "acceleration-negative";
}
else {
return "acceleration-neutral";
}
},

Primeiro, apenas para maior clareza, mostrarei como definimos as cores em nosso CSS usando variáveis ​​LESS, de modo que quando você chegar à folha de estilo não ficará confuso sobre ver palavras em vez de códigos HEX.

Variables.less:

/**
* Acceleration

*/

@acceleration-up: #8dc65f;
@acceleration-up-lighter: #c8e4b2;
@acceleration-mid: #d1cfe9;
@acceleration-mid-lighter: #e9e8f4;
@acceleration-down: #d52134;
@acceleration-down-lighter: #ea8a94;

Folha de estilo:

Aqui na folha de estilo, definimos as cores para aceleração positiva, negativa e neutra. Quando nosso JS envia uma string para o HTML, a regra de classe é aplicada e obtemos a cor desejada!

/**
* Acceleration colors

* see variables.less

*/

.acceleration-positive {
background
: @acceleration-up;
color
: @text-color-inverse;
}
.acceleration-positive-lighter {
background
: @acceleration-up-lighter;
}
.acceleration-negative {
background
: @acceleration-down;
color
: @text-color-inverse;
}
.acceleration-negative-lighter {
background
: @acceleration-down-lighter;
}
.acceleration-neutral {
background
: @acceleration-mid;
}
.acceleration-neutral-lighter {
background
: @acceleration-mid-lighter;
}
.mode-icon.acceleration-positive-lighter i:before {
background
: @acceleration-up;
}
.mode-icon.acceleration-negative-lighter i:before {
background
: @acceleration-down;
}
.mode-icon.acceleration-neutral-lighter i:before {
background
: @acceleration-mid;
}
/**
* End Acceleration header in journal entry

*/

O resultado:

Aqui está o resultado final, mostrando coloração neutra, positiva e negativa. Essas cores mudam instantaneamente com a vinculação de dados angular!

Cenário