2013-03-21 57 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