Javascript Knockout.js purify html

Javascript Knockout.js purify html,javascript,knockout.js,Javascript,Knockout.js,我有一个使用模板呈现行的表。应用的模板取决于基础行视图模型状态,该状态可以是“编辑”或“视图”。因此,我需要在每个特定情况下使用“编辑模板”或“查看模板”模板。 我希望视图模型不知道它的表示形式,因此我不使用myViewModel.getTemplateName()函数。此外,将来可能会有两个以上的模板。 所以我决定用html代码控制模板,如下所示: <table> <thead>..</thead> <tbody>

我有一个使用模板呈现行的表。应用的模板取决于基础行视图模型状态,该状态可以是“编辑”或“视图”。因此,我需要在每个特定情况下使用“编辑模板”或“查看模板”模板。
我希望视图模型不知道它的表示形式,因此我不使用myViewModel.getTemplateName()函数。此外,将来可能会有两个以上的模板。
所以我决定用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元素之间有内存绑定,所以渲染后可能不需要这些注释。。。有什么想法吗?

谢谢

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


我真的忘记了name函数接受当前项和绑定上下文作为参数。非常感谢。
<tbody>
    <!-- ko template: { foreach: dicts, name: function(item) { return (item.state() == "view")? 'row-etpd-view-template' : 'row-etpd-edit-template' } } -->
    <!-- /ko -->
</tbody>