Подтвердить что ты не робот

Knockout.js без контейнера "foreach" не работает с <table>

Этот код вызывает ошибку (в Chrome): "Не удается найти закрывающий тег комментария для соответствия: ko foreach: MyPlans":

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

Если я использую список вместо этого, все работает:

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

Я хотел бы использовать бесконтактный foreach со столом. Есть ли что-то, что я делаю неправильно? Это ошибка?

4b9b3361

Ответ 1

Это связано с тем, что браузеры автоматически вставляют теги tbody , что создает несоответствие в комментариях. Полученный вывод будет выглядеть так:

<table>
  <!-- ko foreach: MyPlans -->
  <tbody>
    <tr>
      <td>Test</td>
    </tr>
  <!-- /ko -->
  </tbody>
</table>
Стив попытался исправить несоответствующие теги в нокауте, но самое легкое для вас - либо добавить tbody самостоятельно, либо добавить tbody и поместить на него свою привязку.
<table>
  <tbody data-bind="foreach: MyPlans">
    <tr>
      <td>Test</td>
    </tr>
  </tbody>
</table>

Для таблицы допустимо иметь несколько тегов tbody .