Knockout.js без контейнера "foreach" не работает с <table> - PullRequest
52 голосов
/ 14 ноября 2011

Этот код выдает ошибку (в 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 без контейнера со столом. Я что-то не так делаю? Это ошибка?

1 Ответ

89 голосов
/ 14 ноября 2011

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

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

Стив приложил некоторые усилия, пытаясь исправить несоответствующие теги в KO, но вам проще всего либо добавить tbody самостоятельно, либо добавить tbody и наложить на него привязку.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...