2016-04-04 2 views
0

J'essaye d'écrire un assistant qui prend un objet en paramètre et lui renvoie sa longueur. Cette longueur doit être affectée à rowspan d'un td dans une table. C'est ce que je suis en train de faireTrouver la longueur d'un objet à l'aide des Handlebars Helpers

'getRowSpan': function(opts) { 
    return Object.keys(opts.fn(this)).length; 
} 

Et dans le tableau i ne

<td rowspan="{{#getRowSpan logs}}"> 

où les journaux dans un objet que j'ai.

Je ne sais pas où je me trompe. Quelqu'un peut-il m'aider dans ce domaine? Merci

Répondre

1

Je n'ai aucune idée de ce que opts.fn(this) est supposé faire. D'après votre description, je pense que l'aide que vous recherchez est:

Handlebars.registerHelper('getRowSpan', function (context) { 
    return Object.keys(context).length; 
}); 

Ensuite, comme indiqué dans this answer, le « # » est pour block helpers. getRowSpan n'est pas une aide de bloc, il devrait donc être consulté comme:

<td rowspan="{{getRowSpan logs}}"> 

EDIT: Il ressort clairement de la question qu'il ya une certaine confusion sur le contexte et les paramètres des options qui sont passés à l'aide . Je remplace l'identificateur, opts, de mon gestionnaire avec context pour indiquer que nous appelons Object.keys() sur l'objet de contexte et non sur le hachage d'options.

+0

Fonctionne comme un charme. Merci beaucoup d'avoir aidé. –