KnockoutJS - If Binding
Essa ligação permite que você apresente o condicionalmente. Se a condição especificada for verdadeira, mostre os dados; caso contrário, não mostre.
if ligação é semelhante a visibleobrigatório. A diferença é que, na vinculação visível, a marcação HTML subjacente realmente permanece no DOM e se torna visível com base na condição, enquanto emif vinculação, a marcação HTML é adicionada ou removida do DOM com base na condição.
Syntax
if: <binding-condition>
Parameters
O parâmetro é uma condição que você deseja avaliar. Se a condição for avaliada como um valor verdadeiro ou semelhante a verdadeiro, a marcação HTML fornecida será processada. Caso contrário, será removido do DOM.
Se a condição no parâmetro contém um valor observável, então a condição é reavaliada sempre que o valor observável muda. Da mesma forma, a marcação relacionada será adicionada ou removida com base no resultado da condição.
Example
Vamos dar uma olhada no exemplo a seguir, que demonstra o uso da ligação if.
<!DOCTYPE html>
<head>
<title>KnockoutJS if binding</title>
<script src = "https://ajax.aspnetcdn.com/ajax/knockout/knockout-3.1.0.js"
type = "text/javascript"></script>
</head>
<body>
<p><strong>Product details</strong></p>
<table border = "1">
<thead>
<th>Product Name</th><th>Price</th><th>Nature</th>
</thead>
<tbody data-bind = "foreach: productArray ">
<tr>
<td><span data-bind = "text: productName"></span></td>
<td><span data-bind = "text: price"></span></td>
<td data-bind = "if: $data.price > 100 ">Expensive</td>
</tr>
</tbody>
</table>
<script type = "text/javascript">
function AppViewModel() {
self = this;
self.productArray = ko.observableArray ([
{productName: 'Milk', price: 100},
{productName: 'Oil', price: 10},
{productName: 'Shampoo', price: 1200}
]);
};
var vm = new AppViewModel();
ko.applyBindings(vm);
</script>
</body>
</html>
Output
Vamos realizar as seguintes etapas para ver como funciona o código acima -
Salve o código acima em if-bind.htm Arquivo.
Abra este arquivo HTML em um navegador.
Este exemplo irá preencher a terceira coluna que fala sobre a natureza dos produtos (caros ou não) dependendo do preço. Observe que a propriedade individual é acessada usando o contexto de ligação $ data.
Observações
Sem contêiner se
Pode haver uma situação em que não seja possível colocar a vinculação de dados dentro de um elemento DOM. A verificação essencial ainda pode ser realizada com a ajuda decontainer-less sintaxe baseada nas tags de comentário mostradas a seguir.
O <! - ko -> e <! - / ko -> funcionam como marcadores de início e fim, tornando-se uma sintaxe virtual e vinculando os dados como se fossem um contêiner real.
Example
Vamos dar uma olhada no exemplo a seguir, que demonstra o uso da sintaxe sem contêiner.
<!DOCTYPE html>
<head>
<title>KnockoutJS if binding</title>
<script src = "https://ajax.aspnetcdn.com/ajax/knockout/knockout-3.1.0.js"
type = "text/javascript"></script>
</head>
<body>
<ul>
<li>Monday</li>
<li>Tuesday</li>
<li>Wednesday</li>
<li>Thursday</li>
<li>Friday</li>
<!-- ko {if: weekend} -->
<li>Saturday - check if it is weekend.</li>
<li>Sunday</li>
<!-- /ko -->
</ul>
<script>
function AppViewModel() {
this.weekend = false;
}
var vm = new AppViewModel();
ko.applyBindings(vm);
</script>
</body>
</html>
Output
Vamos realizar as seguintes etapas para ver como funciona o código acima -
Salve o código acima em if-container-less.htm Arquivo.
Abra este arquivo HTML em um navegador.