Pesquisa de site

javascript - Mustache.js obtendo o índice atual de um array


No carregamento inicial da página, estamos carregando um grande objeto de dados JSON com feeds de notícias. Estamos usando Mustache.js e listando todas as manchetes dos novos feeds, o que está funcionando muito bem.

Temos uma área div para exibir os detalhes do item de notícias clicado. Como já temos os dados carregados, preciso passar o índice do item atual (índice do array) para pegar o item de notícia do qual precisamos obter os detalhes.

{{#Data}}
    <li>
       {{eventName}}<br />
       {{eventLocName}}<br />
       {{eventLocCity}}, {{eventLocST}}
    </li>
{{/Data}}

  • com o índice do array como
  • Eu gostaria de adicionar um id ao

    {{#Data}}
        <li id='{{Data.index}}'>
           {{eventName}}<br />
           {{eventLocName}}<br />
           {{eventLocCity}}, {{eventLocST}}
        </li>
    {{/Data}}
    

    Qual é a sintaxe para obter o índice do array no meu template Mustache.js?

    ATUALIZADO/FUNCIONANDO

    Uma vez que eu coloco meus resultados no DOM, usei o seguinte JS para adicionar o 'índice' em cada item do array. (selecionar a resposta abaixo do código ajudou)

    for (i in result)
    result[i].index = i;
    

    Resposta #1

    Desculpe... Acho que você precisa adicionar o índice manualmente:

    for (i in Data)
       Data[i].index = i;
    

    e

    {{#Data}}
        <li id='{{index}}'>
           {{eventName}}<br />
           {{eventLocName}}<br />
           {{eventLocCity}}, {{eventLocST}}
        </li>
    {{/Data}}
    

    Resposta #2

    Até onde eu sei, você não pode fazer isso com Mustache.js, mas você pode fazer com Handlebars.js, que basicamente estende a funcionalidade do Mustache.

    Você pode simplesmente importar handlebars.js em vez de mustache.js (já que ele usa a mesma sintaxe e tem a mesma funcionalidade, mas com alguns extras) e então fazer

    {{#each Data}}
        <li id='{{@index}}'>
           {{eventName}}<br />
           {{eventLocName}}<br />
           {{eventLocCity}}, {{eventLocST}}
        </li>
    {{/each}}
    

    Aviso: Estou longe de ser um especialista, então não ficaria surpreso se você obtiver uma resposta melhor.