2015-01-03 12 views
6

Sto tentando di scrivere un pacchetto Meteor che può essere inserito all'interno dei modelli. Quindi ho prima tentato di registrare un aiutante.Meteor: che cos'è Spacebars.kw {hash: Object}

Template.registerHelper('testHelper', function(a, b) { 
     console.log(a); 
     console.log(b); 
}) 

ho aggiunto il pacchetto all'interno /packages, e nel mio modello di client, quando ho aggiunto {{testHelper "hello" "meow"}}, la console registrato hello e meow, che è quello che mi aspettavo.

Quando ho aggiunto {{testHelper "hello"}}, mi aspettavo che la console registrasse hello e null, poiché non è stato passato nulla come secondo parametro. Ma invece restituito hello e un oggetto - Spacebars.kw {hash: Object}

Che cos'è questo Spacebars.kw {hash: Object}? Cosa posso fare se voglio che restituisca null?

risposta

13

Spacebars.kw contiene un oggetto hash con hash di parametri di input.

Meteor ha due metodi per abbinare metodi, uno è abbinamento diretto che è dove i parametri sono direttamente in ingresso, per esempio {{testHelper "variable1" "variable2" "variable3"}}, corrisponderebbe come function(a,b,c) come variabili 1-3 corrispondenza fino ad a, b e rispettivamente c.

Il secondo metodo di ingresso utilizza un hash :

{{testHelper a="variable1" b="variable2" c="variable3"}} 

questo darebbe un singolo parametro per function(a) dove a è un oggetto Spacebars.kw.

Scopo Spacebars.kw avrebbe un subobject chiamato hash con una struttura che soddisfa:

{ "a" : "variable1", 
    "b" : "variable2", 
    "c" : "variable3" } 

Meteor tenta di far corrispondere la prima param direttamente, ma i parametri successivi sarà abbinato come hash incase seconda l'input è vuoto come nel caso in cui si utilizza {{testHelper 'hello'}} dove b sarebbe nullo, quindi è indicato come hash.

Generalmente fornito come questo, quindi se si ottiene b come oggetto Spacebars.kw, si può presumere che non ci sia stato un secondo input. L'alternativa è che si potrebbe usare le dichiarazioni di stile di hash e poi direttamente verificare se il valore di hash è null:

{{testHelper text="Hello"}} 
{{testHelper text="Hello" othertext="Hellooo"}} 

e l'assistente:

Template.registerHelper('testHelper', function(kw) { 
    console.log(kw.hash.text); 
    console.log(kw.hash.othertext); 
}); 
+0

Grazie Akshat ancora una volta, sei una stella! Ho seguito le dichiarazioni di stile hash e funziona alla grande. Ho una domanda di follow-up che pubblicherò come una nuova domanda. A proposito, questo 'Spacebars.kw' è documentato? Non riesco a trovarlo nei documenti, forse possiamo aggiungere questo ai documenti? – dayuloli

+0

cosa significa kw? –

Problemi correlati