KnockoutJS - Encadernação de estilo
A vinculação de estilo permite aplicar estilo embutido ao elemento HTML DOM, manipulando o atributo de estilo do elemento em vez de aplicar classes CSS. Esta associação requer um par de valores-chave devido ao estilo embutido.
Sintaxe
style: <binding-object>
Parâmetros
O objeto JavaScript deve ser passado como um parâmetro em que o nome da propriedade se refere ao atributo de estilo e os valores se referem aos valores desejados a serem aplicados nos elementos.
Vários estilos também podem ser aplicados ao mesmo tempo. Suponha que você tenha uma propriedade de desconto em seu ViewModel e queira adicioná-la, então o código se parecerá com o seguinte -
<div data-bind = "style: {
color: productStock() < 0 ? 'red' : 'blue',
fontWeight: discount() ? 'bold' : 'normal'
}>
Se o productStock não estiver disponível, a fonte ficará vermelha. Caso contrário, torna-se azul. Se o desconto for definido como verdadeiro, os Detalhes do Produto ficarão em negrito. Caso contrário, ele permanecerá na fonte normal.
Se a propriedade ViewModel for observável, os estilos serão aplicados dependendo do novo valor de parâmetro atualizado. Se não for um valor observável, o estilo será aplicado apenas uma vez, pela primeira vez.
Exemplo
Vamos dar uma olhada no exemplo a seguir, que demonstra o uso do estilo Binding.
<!DOCTYPE html>
<head>
<title>KnockoutJS style binding</title>
<script src = "https://ajax.aspnetcdn.com/ajax/knockout/knockout-3.1.0.js"
type = "text/javascript"></script>
</head>
<body>
<div data-bind = "style: { color: productStock() < 0 ? 'red' : 'black' }">
Product Details.
</div>
<script type = "text/javascript">
function AppViewModel() {
this.productStock = ko.observable(30000) // initially black as positive value
this.productStock(-10); // now changes DIV's contents to red
};
var vm = new AppViewModel();
ko.applyBindings(vm);
</script>
</body>
</html>
Resultado
Vamos realizar as etapas a seguir para ver como o código acima funciona -
Salve o código acima em style-bind.htm Arquivo.
Abra este arquivo HTML em um navegador.
Se productStock ficar abaixo de 0, então os detalhes do produto tornam-se vermelhos. Caso contrário, se houver estoque disponível, ele se tornará preto.
Observações
Nomes de variáveis Javascript ilegais
Nome do estilo CSS font-weightnão é permitido em JavaScript. Em vez disso, escreva comofontWeight (Hífen em nomes de variáveis não é permitido em JavaScript).
Clique aqui para todos os atributos de estilo JavaScript, que também estão disponíveis no site oficial do KO.