web-dev-qa-db-fra.com

Comment utiliser plusieurs paramètres dans un assistant de guidon avec météore?

J'essaie de créer un assistant personnalisé à l'aide de Meteor. Après le doc ici: https://github.com/meteor/meteor/wiki/Handlebars

J'ai essayé de définir mon aide comme suit:

Template.myTemplate.testHelper = function(foo, bar, options) {
    console.log(foo);
    console.log(bar);
}

Mon modèle ressemble à ceci:

<template name="myTemplate">
    {{#testHelper "value1" "value2"}}
    {{/testHelper}}
</template>

En regardant la sortie de ma console, je m'attendais à voir 2 lignes de sortie:

value1
value2

Cependant ma console ressemble à:

value1
function (data) {
    // don't create spurious annotations when data is same
    // as before (or when transitioning between e.g. `window` and
    // `undefined`)
    if ((data || Handlebars._defaultThis) ===
        (old_data || Handlebars._defaultThis))
      return fn(data);
    else
      return Spark.setDataContext(data, fn(data));
  } 

Remarque, je suis complètement nouveau pour les météores et les guidons. Je pense que je serais beaucoup plus heureux d'utiliser le soulignement, mais la documentation pour les météores jette un coup d'œil sur le soulignement presque entièrement. Suis-je en train de faire quelque chose de mal en définissant ma fonction d'aide? Il semble qu'il ne voit pas le deuxième paramètre "bar" et qu'il l'interprète plutôt comme les options. (Remarque: si je console.log (options), il renvoie "non défini").

Meteor version 0.4.0 (8f4045c1b9)

51
Greg

Votre logique est bonne, apportez juste quelques modifications au modèle

<template name="myTemplate">
  {{testHelper "value1" "value2"}}
</template>

Gardez à l'esprit que la fonction testHelper n'est définie que dans le modèle myTemplate.

Si vous voulez enregistrer globalement testHelper, vous devrez faire quelque chose comme ceci

Handlebars.registerHelper('testHelper', function(foo, bar){
  console.log(foo);
  console.log(bar);
});

S'amuser

59
Rui Gonçalves

En plus de

<template name="myTemplate"> {{testHelper "value1" "value2"}} </template>

Au lieu de passer une valeur en paramètre passez la fonction en paramètre Voici le code pour ça

<template name="myTemplate">
    {{ testHelper1 (testHelper2 "value2") }}
</template>

à votre santé!!!!!

1
mad Man