KnockoutJS - hasFocus Binding
Essa ligação é usada para definir manualmente o foco de um elemento HTML DOM por meio de uma propriedade ViewModel. Este também é um método de ligação bidirecional. Quando o elemento é focado na IU, o valor booleano da propriedade ViewModel também é alterado e vice-versa.
Sintaxe
hasFocus: <binding-value>
Parâmetros
Se o parâmetro for avaliado como verdadeiro ou valor semelhante a verdadeiro (como objetos inteiros ou não nulos ou string não vazia), o elemento DOM é focalizado, caso contrário, ele fica desfocado.
Quando o elemento é focalizado ou desfocado pelo usuário manualmente, a propriedade Boolean ViewModel também é alterada de acordo.
Se o parâmetro for observável, o valor dos elementos será focado ou desfocado conforme e quando o observável subjacente for alterado. O elemento é processado apenas uma vez, se nenhum observável for usado.
Exemplo
Vamos dar uma olhada no exemplo a seguir, que demonstra o uso da vinculação hasFocus.
<!DOCTYPE html>
<head>
<title>KnockoutJS hasFocus Binding</title>
<script src = "https://ajax.aspnetcdn.com/ajax/knockout/knockout-3.3.0.js"
type = "text/javascript"></script>
</head>
<body>
<p>Enter primary contact number : <input data-bind = "
value: primaryContact,
hasFocus: contactFlag,
style: {
'background-color': contactFlag() ? 'pink' : 'white'
} " />
</p>
<button data-bind = "click: setFocusFlag">Set Focus</button>
<script type = "text/javascript">
function ViewModel() {
this.primaryContact = ko.observable();
this.contactFlag = ko.observable(false);
this.setFocusFlag = function() {
this.contactFlag(true);
}
};
var vm = new ViewModel();
ko.applyBindings(vm);
</script>
</body>
</html>
Resultado
Vamos realizar as seguintes etapas para ver como funciona o código acima -
Salve o código acima em hasfocus-bind.htm Arquivo.
Abra este arquivo HTML em um navegador.
Clique no botão Definir foco para definir o foco na caixa de texto.
A cor de fundo da caixa de texto é alterada, quando o foco é definido nela.