2012-04-19 5 views
8

Согласно http://handlebarsjs.com/expressions.html, я должен быть в состоянии сделать это:Как получить доступ к свойствам объекта из шаблона?

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

Но я не могу показаться, чтобы получить эту работу в метеора. Вот мой шаблон:

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

Вот JavaScript, который возвращает элемент:

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

И да, вещь действительно имеет свойство name :-)

Когда я делаю это, Я вижу ошибку в Firebug, которая говорит ret is undefined

Это можно отследить до score.js:

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

В момент ошибки ret ссылается на объект window. Что с этим?

ответ

12

Вы должны использовать {{#with объект}}

Если ваш объект что-то вроде:

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

В шаблоне Ваш может сделать:

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

Здесь вы идете:)

+3

Я просто добавлю к этому, что использование сайта http://tryHandlebarsjs.com (вставьте в некоторые JSON и ваш шаблон) может быть один из самых быстрых способов выяснить, что происходит в этом случае. Тогда вы просто сосредоточены на своем шаблоне и данных в отсутствие чего-либо еще, что может пойти не так. –

+0

@Paperwork: Еще раз спасибо. Мне было интересно, что такое задержка, и теперь кажется, что мой вопрос вдохновил вас зарегистрироваться в StackOverflow, поэтому я думаю, что сегодня мы сделали хорошее дело :-) – Samo

+0

@Samo: Именно это было хорошим предложением made;) –