multiple knockout for data javascript knockout.js knockout-2.0

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>&#9733;</span> <!-- /ko -->

Esto imprimirá una estrella por el_length_you_need veces