2011-12-06 9 views
0

配列が(オブジェクトのプロパティではなく)jqueryテンプレートに直接渡された場合、それをどのように反復するのですか?渡されたデータを繰り返し処理するためにそれぞれを使用する

例:

var hired=[{name:'Jack'}, {name:'Jack'}, {name:'Jack'}] 

これは、以下のテンプレートに渡されるデータです。データで渡さを参照するには何のプロパティ名が存在しないため

Template Start 
<div> 

<table> 

{{each $data}} 

<tr> 
    <td width="250" align="left">${$value.name}</th> 
    <td width="150" align="center">${$value.name}</th> 
    <td width="60" align="center">${$value.name}</th> 
</tr> 
{{/each}} 

</table> 

</div> 

Template End 

、私は$のデータを使用してみましたが、それは動作しません。ここでアレイにアクセスするにはどうすればよいですか?

ありがとうございます。

+0

jQueryテンプレートの仕組みはよく分かりませんが、javaScript配列ではプロパティが要素インデックスであるオブジェクトリテラルのように動作します。したがって、例の配列はオブジェクト{0:{name: 'Jack'}、1:{name: 'Jack'}、2:{name: 'Jack'}と同じ(各ループの視点から) }} – rsalmeidafl

答えて

1

HTML:

<table id="tableID"> 
</table> 

のjavascript:

var hired=[{name:'Jack'}, {name:'Jimmy'}, {name:'Ron'}] 

    for(var i=0; i < hired.length; i++) { 
     $("#tableID").append(
      "<tr> \ 
      <td width=\"250\" align=\"left\">" + hired[ i ].name + "</td> \ 
      <td width=\"150\" align=\"center\"> " + hired[ i ].name + " </td> \ 
      <td width=\"60\" align=\"center\"> " + hired[ i ].name + " </td> \ 
      </tr>" 
     ); 
    }; 

は、あなたが何かを理解できないなら、私に知らせてください。

+0

ありがとうございますが、私はjqueryテンプレート固有の答えを探しています。 – ChrisOdney

2

tmplに配列を渡すと、テンプレートが各要素に自動的に適用されます。あなたが望むものではありませんか?テンプレートで

var hired = [{name:'Jack'}, {name:'Jack'}, {name:'Jack'}]; 

<script id="hired-template" type="text/x-jquery-tmpl"> 
    <tr> 
     <!-- I think you originally closed these with 'th' by mistake. --> 
     <td width="250" align="left">${name}</td> 
     <td width="150" align="center">${name}</td> 
     <td width="60" align="center">${name}</td> 
    </tr> 
</script> 

<table id="hired-table"></table> 

これは、あなたができるようにする必要があります。

$('#hired-template').tmpl(hired).appendTo('#hired-table'); 

とget:もちろん

<table id="hired-table"> 
    <tr> 
     <td width="250" align="left">Jack</td> 
     <td width="150" align="center">Jack</td> 
     <td width="60" align="center">Jack</td> 
    </tr> 
    <tr> 
     <td width="250" align="left">Jack</td> 
     <td width="150" align="center">Jack</td> 
     <td width="60" align="center">Jack</td> 
    </tr> 
    <tr> 
     <td width="250" align="left">Jack</td> 
     <td width="150" align="center">Jack</td> 
     <td width="60" align="center">Jack</td> 
    </tr> 
</table> 

を、私はもしわかりませんあなたは "Jack"が合計9つのtim es;しかし、それはあなたのコードがうまくいけば何をするかのようです。

+0

答えをありがとう、私はこれを認識していますが、私のケースでは、テンプレートを複数回レンダリングすることはできませんし、サブテンプレートを使用することもできません。そこには、渡されたデータオブジェクトを保持する方法はありませんか?私は質問のテンプレートを編集しました。 – ChrisOdney

関連する問題