0

テンプレートを使用して行がレンダリングされるテーブルがあります。適用されるテンプレートは、基になる行ビュー モデルの状態 (「編集」または「表示」) に依存します。したがって、特定のケースごとに「edit-template」または「view-template」テンプレートを使用する必要があります。
ビューモデルがその表現を認識しないようにしたいので、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 に答える