2012-04-19 45 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

這可以追溯到evaluate.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和你的模板)可以在這種情況下,找出問題的最快方法之一。然後,您只需將注意力集中在模板和數據上,而不需要其他任何可能出錯的數據。 – 2012-04-19 20:41:03

+0

@Paperwork:再次感謝。我想知道延遲是什麼,現在看來我的問題啓發你註冊了StackOverflow,所以我想我們今天都做了一件好事:-) – Samo 2012-04-20 01:30:56

+0

@Samo:確實,這是一個很好的建議); – 2012-04-20 16:57:30