javascript - data - knockout js for
Knockout ''para'' atar? (3)
Puedes hacer algo como esto:
<div data-bind="foreach: [0,0,0,0,0]">
<span data-bind="text: $index"></span>
</div>
Y obtendrás los elementos 0-4.
Pero, como dijo Chris en los comentarios, esto parece extraño. Cuéntanos qué intentas hacer y te indicaremos la dirección correcta.
Pregunta original
¿Alguien tiene o sabe de un enlace para knockout que permitiría un comportamiento similar a un bucle for? Puedo hacer un foreach para hacer lo que quiero, pero estaría bien si no tuviera que hacerlo de esa manera.
Editar 2
Estoy tratando de crear filas de tabla en función de una selección que hace el usuario. En algunos casos, necesito x filas donde x es la longitud de una matriz, otras veces x representa la mayor cantidad de filas que se necesitarán para mostrar n matrices.
Ejemplo: image1 se basa en 4 matrices diferentes, todas las cuales varían en tamaño. Image2 se construye a partir de la misma matriz y se duplica en este caso.
<div data-bind="if: selectedTab()">
<table>
<thead>
<tr>
<td>
<div class="a-i-post-All"></div>
</td>
<!-- ko foreach:$root.selectedTab().races-->
<td>
<input type="checkbox" />
</td>
<!-- /ko -->
</tr>
</thead>
<tbody data-bind="foreach: selectedTab().runners"> // <-- This is an empty array created by the max number of Runners in the selectedTabs array of Races
<tr>
<td>
<div class="a-i-post"></div>
</td>
<!-- ko foreach:$root.selectedTab().races-->
<td>
<!-- ko if: Runners.length > $parentContext.$index()-->
<input type="checkbox" />
<!-- /ko -->
</td>
<!-- /ko -->
</tr>
</tbody>
Lo anterior funciona bien y crea lo que quiero, pero no me gusta tener que convertir selectedTab.runners de un número en una matriz vacía solo para hacer que se repita n veces para crear las filas. Estoy abierto a sugerencias. Nota: Desde el momento en que publiqué esta pregunta, originalmente he revisado este código considerablemente y ahora solo tengo una ocurrencia relacionada con mi pregunta inicial.
Mi enlace de repetición hace exactamente esto.
<tbody>
<tr data-bind="repeat: { foreach: selectedTab().runners, index: ''$runner'' }">
<td>
<div class="a-i-post"></div>
</td>
<td data-bind="repeat: selectedTab().races">
<!-- ko if: $item().Runners.length > $runner -->
<input type="checkbox" />
<!-- /ko -->
</td>
</tr>
</tbody>
Puede crear un objeto Array:
<!-- ko foreach: new Array(the_length_you_need) -->
<span>★</span>
<!-- /ko -->
Esto imprimirá una estrella por el_length_you_need veces