2012-09-24 7 views
48

Sto cercando di creare un helper personalizzato usando Meteor. In seguito al documento qui: https://github.com/meteor/meteor/wiki/HandlebarsCome utilizzare più parametri in un helper del manubrio con meteora?

ho cercato di definire il mio aiuto come segue:

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

mio modello si presenta come:

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

Guardando la mia uscita della console, mi aspettavo di vedere 2 righe di output:

value1 
value2 

Tuttavia il mio console è simile a:

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, sono completamente nuovo alla meteora e al manubrio. Penso che sarei molto più contento di usare il trattino basso, ma la documentazione per la meteora getta uno sguardo quasi totale sul carattere di sottolineatura. Sto facendo qualcosa di sbagliato nel definire la mia funzione di aiuto? Sembra che non veda il secondo parametro "bar", e invece lo interpreti come opzioni. (Nota: se console.log (opzioni) restituisce 'undefined').

Meteor versione 0.4.0 (8f4045c1b9)

risposta

53

La logica è buona, basta fare alcune modifiche al modello

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

Bare in mente che la funzione testHelper è definita solo nel modello MyTemplate.

Se si desidera registrare testHelper a livello globale è necessario fare qualcosa di simile

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

Buon divertimento

+2

Questo non è valido se è necessario un helper di stile {{# if}} Content {{/ if}}. – Donflopez

+8

uno può combinare gli helper in tale scenario: '{{# testfarfetto" v1 "" v2 "}} alcuni Template {{/ if}}' – Matanya

+0

Dove si suppone che venga messo il 'Handlebars.registerHelper'? –

1

aggiunta alla

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

Invece di passare un valore come un parametro passa la funzione come parametro Ecco il codice per quello

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

evviva !!!!!

Problemi correlati