はい、ノックアウトでは可能です。
ルート要素内でテンプレート名を指定できます。
<ul data-bind="template: {name: listItemTmpl, foreach: items()}"></ul>
そして、そのテンプレート内で、data-bind
属性を介して他のテンプレートを参照することもできます:
<script id="listItemTmpl" type="text/x-jquery-tmpl">
<li>
<h3 data-bind="text: name"></h3>
<div data-bind="template: itemDetailsTmpl"></div>
</li>
</script>
Knockout はルート テンプレート バインディングを適用しdata-bind
、そのテンプレート内の属性に遭遇すると、それらを再帰的に適用します。
私のサンプルではlistItemTmpl
、それぞれに適用されitems()
、次に詳細を表示するために使用されるそれぞれに適用されますitemDetailsTmpl
。
パフォーマンスに関しては、非常に高速で、ユーザーにとって目立ちません。
私は現在のプロジェクトでこの方法でノックアウト テンプレートを使用しており、再帰的なテンプレートを使用すると、マークアップの一部を小さなセクションにまとめておくことができます。
これはあなたが探していたものですか?