2011-06-19 17 views
2

私はテンプレートを生成するためにテンプレートにノックアウトを使用しようとしています。knockout.jsはテンプレートを使ってテンプレートを生成できますか?

HTML形式の線に沿って

:問題がどのように中括弧であると思われhttp://jsfiddle.net/scottwww/yQZUE/2/

<script id="searchField-template" type="text/html"> 
    <li data-bind="text: name"></li> 
</script> 

<script id="template-template" type="text/html"> 
    <ul data-bind="template: { name: 'searchField-template', foreach: ${name} }" ></ul> 
</script>  

JS:ここ

var viewModel = { 
    Title: [{ 
     name: "Title1"}, 
    { 
     name: "Title2"}, 
    { 
     name: "Title3"}], 
    Manager: [{ 
     name: "Manager1"}, 
    { 
     name: "Manager2"}, 
    { 
     name: "Manager3"}], 

    Defn: [{ 
     name: "Title"}, 
    { 
     name: "Manager"}] 

}; 

ko.applyBindings(viewModel); 

実行可能なサンプル解釈される。

提案がありますか?

答えて

0

ネストされたテンプレート内の変数$dataを使用します。

http://jsfiddle.net/dwick/yQZUE/3/

+0

内側のテンプレートが取得していません適用 - 私はTitle1、Title2、.... –

+0

に期待すると、テンプレートが正常に動作します。それは間違っているビューモデルです。あなたはここで何をしようとしていますか? –

+1

あなたは外側のテンプレートに 'Defn'を渡していて、' Title 'と 'Manager'という2つの名前を表示します。それはうまく動作します。 View Modelで各項目のすべての名前を印刷しますか?それは少しviewModelを変更する必要があります。 – neebz

2

わからないこれが正しい方法ですが、VMへの参照ができます。

http://jsfiddle.net/scottwww/vwP3w/1/

HTML:

<div data-bind="template: { name: 'template-template', foreach: Defn }"></div> 

<script id="searchField-template" type="text/html"> 
    <li data-bind="text: name"></li> 
</script> 

<script id="template-template" type="text/html"> 
    <ul data-bind="template: { name: 'searchField-template', foreach: vm[$data.name] }" ></ul> 
</script>  

JS:

var viewModel = { 
    Title: [{ 
     name: "Title1"}, 
    { 
     name: "Title2"}, 
    { 
     name: "Title3"}], 
    Manager: [{ 
     name: "Manager1"}, 
    { 
     name: "Manager2"}, 
    { 
     name: "Manager3"}], 

    Defn: [{ 
     name: "Title"}, 
    { 
     name: "Manager"}] 

}; 
window.vm = viewModel; 
ko.applyBindings(viewModel); 
関連する問題