template knockout define component knockout.js knockout-2.0

knockout.js - component - knockout js define



Knockout no está evaluando una expresión al usar $ index en un enlace (2)

¿Por qué es que cuando intento usar knockout.js para enlazar texto usando $ index, obtengo el código de una función en lugar de un número?

<tbody data-bind="foreach: MyList"> <tr> <td><span data-bind="text: $index + 1"></span></td> </tr> </tbody>

En lugar de obtener 1, 2, 3 etc., obtengo esto:

Puede ver, por el último carácter en la imagen de arriba, que mi índice de cero se está agregando a 1. Si elimino el ''+ 1'' de mi enlace, obtengo 0, 1, 2 en lugar de la función.

¿Cómo le digo a KO para evaluar la expresión? Tengo el mismo problema cuando envío el formulario. Mis campos de cadena se envían como una función en lugar del valor.


$ index es un observable, que es una función. Pruebe <span data-bind="text: $index() + 1"></span>


Si utiliza

<span data-bind="text: $index() + 1"></span>

y, por ejemplo, su valor de índice es 2, el texto de su lapso será: 21 y no 3.

debe definir una función en su viewModel, así:

self.itemNumber = function(index) { return index + 1; }

y luego en tu extensión debes hacer:

<span data-bind="text: $root.itemNumber($index())"></span>

Espero que esto sea de ayuda :)