2011-09-12 17 views
5

このJSONを1秒間表示します。はい、地獄のように入れ子になっています。データ階層を維持するためにネストする必要があります。Jqueryテンプレート - ネストされたJSON(一意のキー名)

JSON from firebug console

私の問題は、(原因C#辞書のキーに同じにすることはできません)キーはジェネリックではないということです。これらはデータによって異なります。私のテンプレートは、これまでのようになります。

<script id="customerTemplate" type="text/x-jQuery-tmpl"> 
     {{each $data}} 
      <div class="Customer"> 
       <input class="CustomerId" type="hidden" value="${ $index }" /> 
       <div class="CustomerHeader"> 
        <div class="NameAndCheckbox"> 
         <input type="checkbox" checked="checked" class="CustomerCheckbox" /> 
         <span class="HeadlineText">${ $index }</span> 
        </div> 
       </div> 
       <div class="CustomerProjectWrapper"> 

        /* HOW TO ACCESS DATA WITHIN $data */ 
       </div> 
      </div> 
     {{/each}} 
    </script> 

見ての通り、私は$data内JSONにアクセスしたいです。 $dataの値にはJSONが含まれていますが、それにアクセスする構文はわかりません。$dataの値はでも JSONです。

どうすればいいですか?

注:

これは私のjQueryのコードです:

$.template("ctmpl", $("#customerTemplate"));

$.tmpl("ctmpl", jsonobject).appendTo("#CustomerContainer");

+0

だけFYI、これではありませんJSON、JavaScriptオブジェクトです。 JSONはシリアル化形式です。あなたはJSONとしてサーバーから受け取るかもしれませんが、一度解析すれば単なるObjectです。 – orip

+0

えええええええええええええええええと...私はこれに先立って作ったajax呼び出しからJSON(文字列)を持っています。これは 'var jsonobject = $ .parseJSON(response);'のように行われます。あなたはjson(javascriptオブジェクトではない)を使うべきだと思いますか? – KristianB

+0

いいえ、単なる専門用語です – orip

答えて

8

あなたはこのような構文を使用することができますのインデックス/値の明確な考えを持っている{{each(index, value) array}}何をループしているのか。 {{each}}は、オブジェクトのプロパティをも反復処理できます。

あなたは、このようなデータだったのであれば、:

var data = { 
    testA: { 
     testA1: { 
      testA1A: "blahA1A", 
      testA1B: "blahA1B" 
     }, 
     testA2: { 
      testA2A: "blahA2A", 
      testA2B: "blahA2B" 
     } 
    }, 
    testB: { 
     testB1: { 
      testB1A: "blahB1A", 
      testB1B: "blahB1B" 
     }, 
     testB2: { 
      testB2A: "blahB2A", 
      testB2B: "blahB2B" 
     }, 
    } 
}; 

をあなたは、このようなテンプレートを記述することができます。

<script id="contentTmpl" type="text/html"> 
    <ul> 
    {{each(i, item) $data}} 
     <li>${i}</li> 
     <ul> 
     {{each(j, subItem) item}} 
      <li>${j}</li>  
      <ul> 
      {{each(k, subSubItem) subItem}} 
       <li>${k} = ${subSubItem}</li> 
      {{/each}} 
      </ul> 
     {{/each}} 
     </ul> 
    {{/each}} 
    </ul> 
</script> 

ここにサンプル:http://jsfiddle.net/rniemeyer/8PLGP/

+0

まさに私が必要としたこと...ありがとう! – KristianB

+0

これは素晴らしいです!すごい仕事 –

関連する問題