2011-04-19 4 views
2

たとえば、kockoutjsライブラリなどで複数の階層でテンプレートをネストすることはできますか? http://knockoutjs.com/または他のJavascriptフレームワークネストされたテンプレートを使用したJavascriptフレームワークまたはknockoutjsライブラリ

DataGrid: 
Cell1, Cell2, Cell3, Within Cell4 is a ListBox. 

それは、HTMLのように見えるものは何でも:

私はこのビューを持っています。 knockoutjsや他のjavascriptフレームワークで、複数の階層を持つ入れ子になったテンプレートを作成することは可能ですか?

答えて

0

はい、ノックアウトで可能です。

あなたはルート要素内のテンプレート名を指定することができます。

<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> 

ノックアウトが結合ルートテンプレートを適用しますそのテンプレート内に属性data-bindが出現すると、再帰的に適用されます。

私のサンプルではitems()のそれぞれに対してlistItemTmplが適用され、次にそれぞれについて詳細を示すのにitemDetailsTmplが使用されます。

パフォーマンス面では、ユーザーにとっては非常に高速で気付きにくいものです。

私は現在のプロジェクトでこのようにノックアウトテンプレートを使用しています。再帰的なテンプレートを使用すると、マークアップの一部を小さなセクションに保存できます。

これはあなたが探しているものですか?

+0

あなたが答えたことは涼しいです。もう1つの質問wpfの背景から来ているテンプレートの力について...私はこのListBoxをCell4内に持っているとき、ListBoxの下に開いているadd、delなどの3つのボタンをListBoxと3つのボタンが置くことができますかそのCell4内で? 3つのボタンはListBox項目の操作用です。 – msfanboy

+0

はい、できます。テンプレートはHTMLの単なるビットです。 HTMLは他の要素の中に要素を入れ子にすることを止めるものではありません。 –

+1

それではテンプレートknockoutjsはSilverlightのような強力ですが、はるかに多くのブラウザをサポートしています。 Silverlightをジャンプし、jquery + knockoutjsでasp.net mvcを選択する理由。 – msfanboy

関連する問題