2012-04-19 17 views
8

Según http://handlebarsjs.com/expressions.html, yo debería ser capaz de hacer esto:¿Cómo accedo a las propiedades de un objeto desde una plantilla?

<h1>{{article.title}}</h1> 

Pero me parece que no puede conseguir que esto funcione en meteoritos. Aquí es mi plantilla:

<template name="content"> 
    {{#if item}} 
    <p>{{item.name}}</p> 
    {{/if}} 
</template> 

aquí está el código JavaScript que devuelve el material:

Template.content.item = function() { 
    return Items.findOne({ _id: Session.get("list_id") }); 
    }; 

Y sí, el elemento tiene de hecho una propiedad llamada name :-)

Cuando hago esto, veo un error en Firebug que dice ret is undefined

Esto puede ser rastreado a evaluate.js:

for (var i = 1; i < id.length; i++) 
    // XXX error (and/or unknown key) handling 
    ret = ret[id[i]]; 
return ret; 

En el momento del error, ret hace referencia al objeto window. ¿Que pasa con eso?

Respuesta

12

Debe utilizar {{}} #with objeto

Si el objeto es algo así como:

my_object = { 
    name : 'my_name', 
    prop : 'my_prop' 
} 

En la plantilla de su puede hacer:

<template name="my_template"> 
    {{#with my_object}} 
     <p>Name is {{name}}<p> 
     <p>Prop is {{prop}}</p> 
    {{/with}} 
</template> 

Aquí van:)

+3

Voy a agregar a esto que usando el sitio http://tryHandlebarsjs.com (pegue un poco de JSON y su plantilla) puede ser una de las formas más rápidas de descubrir qué está pasando mal en este caso. Entonces solo está enfocado en su plantilla y los datos en ausencia de cualquier otra cosa que pueda salir mal. –

+0

@Paperwork: Gracias de nuevo. Me preguntaba cuál fue la demora, y ahora parece que mi pregunta lo inspiró a registrarse en StackOverflow, así que supongo que ambos hemos hecho una buena acción hoy :-) – Samo

+0

@Samo: Exactamente, esa fue una buena sugerencia hecho;) –

Cuestiones relacionadas