2011-06-22 10 views
2

これはjsonオブジェクトとjqueryテンプレートの開始時と少し似ています...もっと深くする方法を知りたいです。あなたは再帰的にjQueryのテンプレートを呼び出すにはどうすればよい>:私は怠け者だとコードは私のために仕事をしたいという問題が....jQueryネストされたテンプレートを再帰的に呼び出す/実行する方法

Qです。

このJSONオブジェクトを取る:

var Links = 
[{"Name":"Home","NiceUrl":"/home/","Children":null}, 
{"Name":"MX-8","NiceUrl":"/mx-8/","Children":null}, 
{"Name":"Quiz","NiceUrl":"/quiz/","Children": 
     [{"Name":"Thank you","NiceUrl":"/quiz/thank-you/","Children": 
     [{"Name":"Can't get here","NiceUrl":"/URL/","Children":null}] 
    }] 
}]; 

私は簡単に次のテンプレートを使用して、 "クイズ" とその子 "ありがとう" を取得することができます。

も使用
<script id="itemTemplate" type="text/x-jquery-tmpl"> 
    <li><a href="${NiceUrl}">${Name}</a> 
     {{tmpl($data) "#childTemplate"}} 
    </li> 
</script> 
<script id="childTemplate" type="text/html"> 
    <ul>{{each Children}}<li><a href="${NiceUrl}">${Name}</a></li>{{/each}}</ul> 
</script> 

はhtmlですそれを置き換える呼び出し:

<script type="text/javascript"> 
    $("#itemTemplate").tmpl(Links).appendTo("#SiteMapHolder"); 
</script> 
<ul id="SiteMapHolder"> 
    <%--jQuery Template will replace this empty space--%> 
</ul> 

私は2番目のテンプレートのタイプを "text/x-jquery-tmpl"に設定して3番目のテンプレートを呼び出そうとしましたが、渡されるデータはそれを呼び出す親と同じようです。

そうすれば、より高い知性と経験を持つすべての人に、私はを怠け者にし、jQueryテンプレートを再帰的に呼び出すことができますか?

PS:申し訳ありませんが、これはjsFiddleにありません。私のスクリプトタグが好きではありません。 :(

+0

がどのmodは読みやすいように、このカラフルを作成する方法を知っているん – Kieran

+1

ウェイ「インセプション」の前には導入していました巣の概念同僚の同僚は、さまざまな薬(それは70年代)の上でプログラミングを試みることに決めました。彼は酸味があり、効力を発揮した後でプログラミングをしたことはありませんでした。彼はいくつかの機能の再帰的定義を見て、ただ笑い始めたと語った。それから彼は笑っていたという事実を笑った。 ... –

+0

@mike私はこれを笑って自分自身を笑っています。悪質なサイクルが終わるのはいつですか? – Kieran

答えて

3

子供が存在するかどうかをチェックし、子どもをデータとして持つ同じアイテムテンプレートを再帰呼び出しする必要があると思うのですが、条件付きでulタグを追加することもできます。 http://jsfiddle.net/bernardchen1/SK2c6/

私はこのようなルックスを使用することをテンプレート自体:。?

<script id="itemTemplate" type="text/x-jquery-tmpl"> 
<li><a href="${NiceUrl}">${Name}</a> 
    {{if Children}} 
    <ul> 
    {{tmpl(Children) "#itemTemplate"}} 
    </ul> 
    {{/if}} 
</li> 

+0

正しい方向に私を始められるようなコード例がありますか? – Kieran

+1

あなたの回答を編集している間にあなたのコメントを追加したかもしれません。私はあなたが望むことを信じているjsfiddleを含めていないし、あなたが必要と思うテンプレートも含んでいます。 –

+0

素晴らしいヒープヒープ。本当にシンプルなので、私はそれを見ることができます。それは自分自身を呼び出すことができます。私はちょうどそれを混乱させていた。再度、感謝します。 – Kieran

関連する問題