2012-05-15 7 views
5

So che utilizza un modello è possibile visualizzare più documenti con i loro attributi come:Con un modello come usare {{attribute}} con un 'record' rispetto a #each usando un cursore find()?

// html 
<template name="hello"> 
{{#each greetings}} 
    {{message}} 
{{/each}} 
</template> 

// js 
Template.hello.greetings = function() { 
    return Greetings.find(); 
} 

Che mostra Greeting.message per ogni saluto documento trovato.

La mia domanda è come utilizzare questo modello per un solo documento? messaggio non può leggere la proprietà': (. incl nessun documento disponibile)

da JavaScript lato vorrei usare qualcosa come return Greetings.findOne({'id' : Session.get("greeting_id")});

Ma quando si utilizza il modello:

<template name="hello"> 
    {{message}} 
</template> 

viene generato un errore: TypeError Uncaught 'undefined

UPDATE

Per ora io uso questo sul lato JS, utilizzando il modello come suggerito da @ tom-wij sman di seguito:

Template.hello.greeting = function() { 
    var greeting = Greetings.findOne({'id' : Session.get("greeting_id")}) 
    if (greeting) 
     return greeting; 
    return {message: ""}; 
} 

risposta

8

Handlebars.js ha anche un #with helper.

<template name="hello"> 
    {{#with greeting}} 
     {{message}} 
    {{/with greeting}} 
</template> 

 

Template.hello.greeting = function() { 
    return Greetings.findOne({'id' : Session.get("greeting_id")}); 
} 
+0

_Bedankt_ // Sì ho pensato che questo appena fuori me stesso. Il problema che rimane da superare è quando il template viene reso quando findOne restituisce {}. Ho risolto il problema restituendo {greeting: ''} in questo caso, vedi il mio aggiornamento nella domanda. –

+1

@ MichelLöhr: Se vuoi dare una mano breve che potresti fare 'return greeting? saluto: {messaggio: ""}; 'ma probabilmente vuoi verificare se c'è effettivamente un saluto, forse' {{#if saluto}} {{/ se saluto}} 'attorno ad esso potrebbe funzionare come alternativa; Non l'ho provato, ma potrebbe ... –

+0

Grazie per il suggerimento! –

Problemi correlati