web-dev-qa-db-fra.com

Comment trouver la longueur de tableau dans les modèles de guidon?

J'ai un modèle de guidon qui est rendu en utilisant un objet JSON. Dans ce Json, j'envoie un tableau. Comme ça:

var json = {
               "array":["abc","def","ghi","jkl"] 
}

Maintenant, dans mon modèle, je veux trouver la longueur de ce tableau. Quelque chose comme:

{{#each item}}
   {{ array.length }}
{{/each}}

Impossible de le trouver dans la documentation du guidon.

71
Abhidev

Ma faute....

{{array.length}} a réellement travaillé à l'intérieur du modèle. Devrait avoir vérifié/testé avant de le poster ici.

152
Abhidev

Dans ce cas, vous devez référencer la variable parent de chaque élément dans chaque bloc:

{{#each array}}
    {{../array.length}}
{{/each}}

Je pense que votre variable nommée "array" est probablement en train de confondre le problème. Supposons quelques JSON différents pour clarifier:

var json = {
    "fruit":["Apple","orange","banana"]
};

Alors alors faire ceci:

<ul>
    {{#each fruit}}
        <li>{{this}} {{@index}} {{../fruit.length}}</li>
    {{/each}}
</ul>

Céderait:

<ul>
    <li>Apple 0 3</li>
    <li>orange 1 3</li>
    <li>banana 2 3</li>
</ul>
28
Kevin Powell

Vous pouvez définir un assistant simple pour le gérer:

Handlebars.registerHelper('get_length', function (obj) {
 return obj.length;
});   

Et utilisez-le ensuite dans votre modèle, par exemple:

{{get_length some_object}}
3
gesiud

Si vous testez une liste vide afin d’afficher du contenu ... Dans Ember.js, qui utilise un guidon, vous pouvez en avoir un autre pour le #each.

{{#each blah as |blah|}}

{{else}}
 //   If array is empty
{{/each}}
0
Epirocks

essaye ça:

   {{#each item}}
   {{ json.array.length }}
{{/each}}
0
Amrendra