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 :)