52 votes

Knockout.js sans conteneur "foreach" ne fonctionne pas avec <table>

Ce code génère l'erreur (dans Chrome): "Impossible de trouver la balise de commentaire de fermeture correspondant à: ko foreach: MyPlans":

 <table>
  <!-- ko foreach: MyPlans -->
    <tr>
      <td>Test</td>
    </tr>
  <!-- /ko -->
</table>
 

Si j'utilise plutôt une liste, tout fonctionne:

 <ul>
  <!-- ko foreach: MyPlans -->
    <li>
      Test
    </li>
  <!-- /ko -->
</ul>
 

Je voudrais utiliser le foreachless sans conteneur avec une table. Y a-t-il quelque chose que je fais mal? Est-ce un bug?

90voto

RP Niemeyer Points 81663

Ceci est lié au fait que les navigateurs insérez tbody automatiquement des balises, ce qui crée un décalage dans les commentaires. Le rendu de la sortie ressemblera à:

<table>
  <!-- ko foreach: MyPlans -->
  <tbody>
    <tr>
      <td>Test</td>
    </tr>
  <!-- /ko -->
  </tbody>
</table>

Steve a mis un certain travail en essayant de corriger incompatibles balises de KO, mais la chose la plus facile pour vous de faire est d'ajouter l' tbody vous-même ou d'ajouter de l' tbody et de mettre votre liaison.

<table>
  <tbody data-bind="foreach: MyPlans">
    <tr>
      <td>Test</td>
    </tr>
  </tbody>
</table>

Il est légal pour un tableau à plusieurs tbody tags, si nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X