2012-04-19 41 views
8

Theo http://handlebarsjs.com/expressions.html, tôi sẽ có thể làm điều này:Làm cách nào để truy cập các thuộc tính của đối tượng từ một mẫu?

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

Nhưng tôi dường như không thể có được điều này để làm việc trong thiên thạch. Dưới đây là mẫu của tôi:

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

Đây là JavaScript mà trả về mục:

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

Và vâng, mục không thực sự có một tài sản gọi là name :-)

Khi tôi làm điều này, Tôi thấy lỗi trong Firebug có nội dung là ret is undefined

Điều này có thể được theo dõi thành evaluate.js:

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

Tại thời điểm xảy ra lỗi, ret tham chiếu đối tượng window. Có chuyện gì thế?

Trả lời

12

Bạn nên sử dụng {{#with đối tượng}}

Nếu đối tượng của bạn là cái gì đó như:

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

Trong mẫu của bạn của bạn có thể làm:

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

Ở đây bạn đi:)

+3

Tôi sẽ chỉ thêm vào điều này khi sử dụng trang http://tryHandlebarsjs.com (dán vào một số JSON và mẫu của bạn) có thể là một trong những cách nhanh nhất để tìm ra những gì đang xảy ra trong trường hợp này. Sau đó, bạn chỉ tập trung vào mẫu của bạn và dữ liệu trong trường hợp không có bất cứ điều gì khác mà có thể đi sai. –

+0

@Paperwork: Cảm ơn bạn lần nữa. Tôi đã tự hỏi sự chậm trễ là gì, và bây giờ có vẻ như câu hỏi của tôi đã truyền cảm hứng cho bạn đăng ký StackOverflow, vì vậy tôi đoán cả hai chúng tôi đã thực hiện một hành động tốt hôm nay :-) – Samo

+0

@ Samo: Chính xác, đó là một gợi ý tốt cho bạn made;) –

Các vấn đề liên quan