knockout.js style Knockout n'évalue pas une expression lors de l'utilisation de $ index dans une liaison




knockout js data bind style (2)

Pourquoi est-ce que, quand j'essaie d'utiliser knockout.js pour lier du texte en utilisant $ index, j'obtiens le code d'une fonction au lieu d'un nombre?

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

Au lieu d'obtenir 1, 2, 3 etc., je reçois ceci:

Vous pouvez voir, par le dernier caractère de l'image ci-dessus, que mon index de zéro est ajouté à 1. Si je supprime le '+ 1' de ma liaison, j'obtiens 0, 1, 2 au lieu de la fonction.

Comment puis-je dire à KO pour évaluer l'expression? J'ai le même problème lorsque je soumets le formulaire. Mes champs de chaîne sont soumis en tant que fonction au lieu de la valeur.


Si tu utilises

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

et par exemple votre valeur d'index est 2, le texte de votre span sera: 21 et non 3.

vous devriez définir une fonction dans votre viewmodel, comme ceci:

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

et alors dans votre portée, vous devriez faire:

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

J'espère que cela aidera :)


$ index est un observable, qui est une fonction. Essayez <span data-bind="text: $index() + 1"></span>