2012-09-24 10 views
48

Estoy tratando de crear un ayudante personalizado utilizando Meteor. Siguiendo con el doc aquí: https://github.com/meteor/meteor/wiki/Handlebars¿Cómo usar múltiples parámetros en un asistente de manubrio con meteoro?

he tratado de definir mi ayudante de la siguiente manera:

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

Mi plantilla se parece a:

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

Mirando a mi salida de la consola, que esperaba vea 2 líneas de salida:

value1 
value2 

Sin embargo, mi la consola se ve así:

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)); 
    } 

Nota, soy completamente nuevo en meteoro, y para manillar. Creo que sería mucho más feliz usando guiones bajos, pero la documentación para miradas de meteoritos sobre subrayado casi en su totalidad. ¿Estoy haciendo algo mal al definir mi función de ayuda? Parece que no está viendo el segundo parámetro "barra", y en cambio lo interpreta como las opciones. (Nota: si console.log (opciones) devuelve 'indefinido').

Meteor versión 0.4.0 (8f4045c1b9)

Respuesta

53

Su lógica es buena, acaba de hacer algunos cambios a la plantilla

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

Desnudo en cuenta que la función testHelper sólo se define en la plantilla mytemplate.

Si desea registrar testHelper a nivel mundial tendrá que hacer algo como esto

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

Diviértete

+2

Esto no es válido si necesita un ayudante de estilo {{#if}} Content {{/ if}}. – Donflopez

+8

se pueden combinar los ayudantes en dicho escenario: '{{#if testHelper" v1 "" v2 "}} alguna Plantilla {{/ if}}' – Matanya

+0

¿Dónde se supone que se debe poner 'Handlebars.registerHelper'? –

1

adición a

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

En lugar de pasar un valor tan un parámetro pasa la función como parámetro Aquí está el código para ese

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

aplausos !!!!!

Cuestiones relacionadas