2011-01-04 11 views
12

Tengo un código que muestra una plantilla bigote con algunas iteraciones como:¿Hay alguna manera de establecer un contador en una iteración de bigote?

{{#items}} 
    some html code.... 
{{/items}} 

pero quiero colocar en la iteración el número de artículo que se representa, al igual que:

{{#items}} 
    This is the item [COUNTER-VAR] 
{{/items}} 

Hay es una forma de realizar esto .. ??

+0

Posible duplicado de [En bigote, ¿Cómo obtener el índice de la sección actual] (http://stackoverflow.com/questions/5021495/in-mustache-how-to-get-the-index- de la sección actual) –

Respuesta

14

Los manubrios ya no son necesarios. Puede usar las secciones de mayor orden en el bigote actual. Estos básicamente le permiten llamar a una función con los contenidos de la sección como argumento. Si esa sección está dentro de una iteración, se llamará para cada elemento en una iteración.

Dada esta plantilla (guardado en una etiqueta de script para la conveniencia & claridad)

<script type="text/html" id="itemview"> 
    <table width="100%" border="0" cellspacing="0" cellpadding="3"> 
     <tbody> 
      {{#items}} 
       <tr> 
        <td>{{#count}}unused{{/count}}</td> 
        <td>{{.}}</td 
       </tr> 
      {{/items}} 
     </tbody> 
    </table> 
</script> 

... y el siguiente código, se puede construir una lista numerada.

function buildPage(root) 
{ 
    var counter = 0; 
    var data = { 
     'items': [ 'England', 'Germany', 'France' ], 

     'count' : function() { 
      return function (text, render) { 
       // note that counter is in the enclosing scope 
       return counter++; 
      } 
     } 
    }; 

    // fetch the template from the above script tag 
    var template = document.getElementById('itemview').innerHTML; 
    document.getElementById("results").innerHTML = Mustache.to_html(template, data); 
} 

Salida: 0 Inglaterra 1 Alemania 2 Francia

5

Uso {{}} @index dentro iteración.

{{#data}} 
    <p>Index is {{@index}}</p> 
{{/data}} 
Cuestiones relacionadas