2013-03-21 63 views
0

我哪里行使用模板呈现的表。应用的模板取决于基础行视图模型的状态,其可以是“编辑”或“视图”。所以我需要在每个特定情况下使用“编辑模板”或“视图模板”模板。
我想视图模型不知道其代表性,所以我不使用一些myViewModel.getTemplateName()功能。另外,将来可能会有多个2个模板。
所以我决定来控制HTML代码模板是这样的:Knockout.js净化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> 

Obviuosly,它呈现为:

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

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

回答

1

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

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

我真的忘了名称函数接受当前项目和绑定上下文作为参数。谢谢! – LINQ2Vodka 2013-03-21 01:52:55