Knockout.js净化html

时间:2013-03-21 00:02:43

标签: javascript knockout.js

我有一个表格,其中使用模板呈现行。应用的模板取决于基础行视图模型状态,可以是“编辑”或“视图”。因此,我需要在每个特定情况下使用“编辑模板”或“视图模板”模板 我希望视图模型不知道它的表示,所以我不使用一些 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元素之间有内存中的绑定,所以在渲染后它可能不需要这些评论......有想法吗?
谢谢!

1 个答案:

答案 0 :(得分:1)

处理此问题的一个好方法是使用templateforeach选项。

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