0

我有一个使用模板呈现行的表。应用的模板取决于底层的行视图模型状态,可以是“编辑”或“视图”。所以我需要在每个特定情况下使用“编辑模板”或“视图模板”模板。
我希望视图模型不知道它的表示,所以我不使用一些myViewModel.getTemplateName()函数。此外,将来可能会有不止一个 2 模板。
所以我决定在 html 代码中控制模板,如下所示:

<table>
    <thead>..</thead>
    <tbody>
        <!-- ko foreach: dicts -->
        <!-- ko template: { name: function(){ return (state() == "view")? 'row-etpd-view-template' : 'row-etpd-edit-template' } } -->
        <!-- /ko -->
        <!-- /ko -->
    </tbody>
</table>

显然,它呈现为:

<!-- ko template: { name: function(){ return (state() == "view")? 'row-etpd-view-template' : 'row-etpd-edit-template' } } -->
<tr>...</tr>

对于每一行。我想避免太多额外的行以及其他内联 KO 使用的情况。有没有办法做到这一点?我想 KO 在视图模型和 DOM 元素之间有内存绑定,所以渲染后可能不需要这些注释......有想法吗?
谢谢!

4

1 回答 1

1

处理此问题的一个好方法是foreach使用template.

<tbody>
    <!-- ko template: { foreach: dicts, name: function(item) { return (item.state() == "view")? 'row-etpd-view-template' : 'row-etpd-edit-template' } } -->
    <!-- /ko -->
</tbody>
于 2013-03-21T01:49:11.223 回答