knockout.js foreach在表中重复td元素,但不重复tr元素

时间:2012-08-24 14:37:56

标签: knockout.js html-table

我从表中使用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文件?

2 个答案:

答案 0 :(得分:24)

只需将“foreach”绑定放在下一个(外部)元素中:

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

您还可以使用虚拟元素:

<!-- ko foreach: files -->
<tr>
    <td>
        ...
</tr>
<!-- /ko -->

答案 1 :(得分:1)

我遇到了一件奇怪的事情:

我试图使用无容器绑定来重复多个表行。 KO抱怨它无法找到关闭/ ko标签。

我在无容器绑定上面定义了一个表头。如果我将其更改为标准表行,一切都按预期工作(除了我的标题没有所需的样式,但我覆盖它)。

希望这可以帮助其他人努力解决这个问题 - 这只是一种解决方法而不是解决方法。