2011-12-14 9 views
6

Estoy tratando de mostrar datos JSON en una tabla usando plantillas jQuery anidadas.nesting jQuery templates

Puedo conseguir que funcione hasta el primer nivel solamente.

He aquí un ejemplo de lo que estoy tratando de lograr:

Un Client tiene una lista de pedidos y un Fullname. Esto se muestra usando clientTemplate y orderTemplate. Hasta ese punto, todo funciona bien.

Ahora, un Order tiene una lista de Products. Entonces llamo a productTemplate desde el orderTemplate. Y los datos no está obligado :(

supongo que esto es porque estoy pasando $data a la productTemplate y $data se refiere al objeto de nivel superior (el Client). Pero, ¿cómo puedo pasar la Orden actual, entonces?

Aquí están mis plantillas:

<script id="clientTemplate" type="text/x-jquery-tmpl"> 
    <tr><td>Fullname</td></tr> 
    <tr><td>${Fullname}</td></tr>   
    <tr> 
     <td> 
      <table> 
      <tr><td>Order Id</td><td>Order Date</td></tr> 
      {{tmpl($data) "#orderTemplate"}}    
      </table> 
     </td> 
    </tr> 
    </script> 

    <script id="orderTemplate" type="text/x-jquery-tmpl"> 
    {{each Orders}} 
     <tr> 
      <td>${Id}</td> 
      <td>${DateOrder}</td>        
     </tr> 
     <tr> 
     <td> 
      <table> 
      <tr><td>Product Id</td><td>Quantity</td></tr> 
      {{tmpl($data) "#productTemplate"}} 
      </table 
     </td> 
     </tr> 
    {{/each}} 
    </script> 

    <script id="productTemplate" type="text/x-jquery-tmpl"> 
    {{each ProductList}} 
     <tr> 
      <td>${Id}</td> 
      <td>${Quantity}</td> 
     </tr> 
    {{/each}} 
    </script> 

Respuesta

3

en el contexto de un {{each}}, usted tiene que utilizar en lugar de $value$data para referirse al elemento de iteración:

{{tmpl($value) "#productTemplate"}} 
+0

¡No lo sabía! Muchas gracias por ayudar :) – Sam