295 votes

Comment accéder à un élément de tableau d'accès par index dans le guidon ?

J'essaie de spécifier l'index d'un élément dans un tableau dans un modèle de guidon :

{
  people: [
    {"name":"Yehuda Katz"},
    {"name":"Luke"},
    {"name":"Naomi"}
  ]
}

en utilisant ça :

<ul id="luke_should_be_here">
{{people[1].name}}
</ul>

Si ce qui précède n'est pas possible, comment pourrais-je écrire une aide qui pourrait accéder à un élément spécifique dans le tableau ?

442voto

dhorrigan Points 1284

Essayez ça :

<ul id="luke_should_be_here">
{{people.1.name}}
</ul>

25 votes

Je reçois Expecting 'ID' erreur avec {{user.links.websites.1}} ou {{user.links.websites.0}}.

139 votes

@OlivierLalonde, j'ai dû utiliser quelque chose comme {{ websites.[0] }} .

4 votes

En effet, @Matt, ce n'est pas juste un format chanceux, mais c'est en quelque sorte la syntaxe documentée. (Voir ma réponse).

337voto

Arjan Points 7154

Les suivantes, avec un point supplémentaire avant l'indice fonctionne comme prévu. Ici, les crochets sont facultatifs lorsque l'indice est suivi d'une autre propriété :

{{people.[1].name}}
{{people.1.name}}

Cependant, les crochets sont requis dans :

{{#with people.[1]}}
  {{name}}
{{/with}}

Dans ce dernier cas, il suffit d'utiliser le numéro d'index sans les crochets pour obtenir un résultat :

Error: Parse error on line ...:
...     {{#with people.1}}                
-----------------------^
Expecting 'ID', got 'INTEGER'

Soit dit en passant, les parenthèses sont (également) utilisées pour syntaxe segmentaire-littérale pour faire référence à des identifiants réels (et non à des numéros d'index) qui seraient autrement invalides. Plus de détails dans Qu'est-ce qu'un identifiant valide ?

(Testé avec Handlebars dans YUI).

Mise à jour 2.xx

Vous pouvez maintenant utiliser le get aide pour cela :

(get people index)

bien que si vous obtenez une erreur sur le fait que l'index doit être une chaîne, faites-le :

(get people (concat index ""))

11 votes

Cette réponse devrait être retenue car elle est plus complète que la réponse choisie. Le fait d'exiger des crochets lorsque l'index est à la fin m'a bloqué pendant un moment !

0 votes

Ceci a fait l'affaire ! merci... la réponse choisie au-dessus de ceci n'a pas fait l'affaire, s'il vous plaît marquez ceci comme la correcte.

1 votes

Le site {{#with people.1}} a fonctionné pour moi, en utilisant com.github.jknack:handlebars:4.1.2 .

25voto

FMQB Points 108
{{#each array}}
  {{@index}}
{{/each}}

0 votes

Génial, c'est la bonne réponse. @index vous donnera la position dans le tableau.

19voto

Bret Weinraub Points 101

Si les fonctionnalités non documentées ne sont pas votre tasse de thé, vous pouvez faire de même ici :

Handlebars.registerHelper('index_of', function(context,ndx) {
  return context[ndx];
});

Ensuite, dans un modèle

{{#index_of this 1}}{{/index_of}}   

J'ai écrit ce qui précède avant de mettre la main sur

this.[0]

Je ne vois pas comment on pourrait aller trop loin avec les guidons sans écrire ses propres aides.

8voto

user1378423 Points 39

Veuillez essayer ceci, si vous voulez récupérer le premier/dernier.

{{#each list}}

    {{#if @first}}
        <div class="active">
    {{else}}
        <div>
    {{/if}}

{{/each}}

{{#each list}}

    {{#if @last}}
        <div class="last-element">
    {{else}}
        <div>
    {{/if}}

{{/each}}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X