knockout.js foreach повторяет элемент td в таблице, но не элемент tr

У меня есть следующая выдержка из таблицы, которую я использую для отображения большого количества файлов, полученных с сервера, используя MVC 4 и библиотеку knockout.js версии 2.1.0.

    <tr data-bind="foreach: files, visible: (files() && files().length > 0)">
        <td data-bind="text: UploadPath" />
        <td data-bind="text: FileName" />
    </tr>

Данные извлекаются правильно, однако foreach повторяет элементы TD в таблице, а не TR. Таким образом, если имеется 100 файлов, в таблице будет отображаться 200 столбцов для пользователя. Как заставить элемент TR повторять файл foreach?

12 голосов | спросил Shawn Gilligan 24 PM00000060000005631 2012, 18:37:56

2 ответа


0

Просто поместите привязку foreach в следующий (внешний) элемент:

<table data-bind="foreach: files, ...">
    <tr>
        ...

Вы также можете использовать виртуальный элемент:

<!-- ko foreach: files -->
<tr>
    <td>
        ...
</tr>
<!-- /ko -->
ответил Niko 24 PM00000060000000531 2012, 18:42:05
0

Я наткнулся на странную вещь:

Я пытался использовать привязку без контейнера для повторения нескольких строк таблицы. КО пожаловался, что не может найти закрывающий тег /ко.

У меня был заголовок таблицы, определенный над привязкой без контейнера. Если я изменил это на стандартную строку таблицы, все работало бы как ожидалось (за исключением того, что у моего заголовка не было требуемого стиля, но я переопределил это).

Надеюсь, что это поможет кому-то еще бороться с этим - это всего лишь обходной путь, а не исправление.

ответил mhall 19 FebruaryEurope/MoscowbThu, 19 Feb 2015 14:04:54 +0300000000pmThu, 19 Feb 2015 14:04:54 +030015 2015, 14:04:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132