2013-01-06 26 views
6

Tôi đang sử dụng Meteor 0.5.2 và cố gắng giải quyết những gì dường như với tôi là một mô hình rõ ràng nên có một giải pháp dễ dàng.Có cách nào để chuyển một tham số vào Handlebars template trong Meteor không?

Tôi có một mẫu mà nên trở lại đoạn khác nhau của dữ liệu trong mỗi mẫu trường.

Ví dụ - Tôi có một mẫu cho thấy chương trình truyền hình - show của chương trình.

Sau đó, tôi cần phải hiển thị hai trường hợp của cùng một mẫu với dữ liệu khác nhau - một chương trình với quá khứ và một với chương trình sắp tới.

Vì vậy, tôi có một chương trình tv mẫu:

<template name="tv_program"> 
    {{#each shows}} 
    ... 
</template> 

Lý tưởng nhất là tôi muốn làm điều gì đó như:

{{> tv_program past_shows}} 
... 
{{> tv_program upcoming_shows}} 

để vượt qua một tham số để tv_program mẫu ví dụ mà tôi có thể đọc từ JavaScript và điều chỉnh các truy vấn mongo.

Hiện nay tôi có sao chép/dán mẫu/code js của tôi và điều chỉnh các truy vấn Mongo nhưng đó có phải là một cách tốt hơn.

Tôi nhìn vào partials/người giúp đỡ với các đối số nhưng điều đó dường như không phải là giải pháp cho vấn đề của tôi.

Xin cảm ơn, Vladimir

Trả lời

6

Bạn đang tiếp cận sự cố ở cấp độ sai. Thay vì cố gắng nói mã của bạn phải làm gì từ các mẫu của bạn, bạn nên cho mẫu của mình biết phải làm gì từ mã của bạn. Ví dụ:

Template.past_shows.shows = function() { return shows(-1); } 

Template.upcoming_shows.shows = function() { return shows(1); } 

function shows(order) { 
    return Shows.find({}, {$sort: order}); 
} 

<template name="past_shows"> 
    {{#each shows}} 
    {{> show}} 
    {{/each}} 
</template> 

<template name="upcoming_shows"> 
    {{#each shows}} 
    {{> show}} 
    {{/each}} 
</template> 

<template name="show"> 
    <li>{{_id}}: {{name}}</li> 
</template> 
+0

Cảm ơn đã chỉ cho tôi theo hướng này Rahul. Tôi đã tái cấu trúc mã của tôi như bạn đã đề xuất. Sau khi hoàn thành, tôi đã để lại một đoạn mã HTML giống hệt nhau trong cả hai mẫu của tôi (mẫu past_shows, coming_shows trong ví dụ - chúng sẽ trông giống nhau và mã mẫu thật phức tạp với hình ảnh và dữ liệu liên quan đến người dùng). Tôi đoán điều này là ok vì nó tốt hơn để có mã dự phòng giống hệt nhau trong quan điểm của tôi hơn trong "điều khiển/mô hình" JavaScript. – vladimirp

+0

Thay vào đó, bạn có thể di chuyển mã trùng lặp vào mẫu 'show' không? –

+0

Thực ra tôi có thể làm điều đó. Mã thực sự của tôi khác với ví dụ đơn giản mà tôi đã sử dụng trong câu hỏi của mình. Cảm ơn Dean. – vladimirp

0

Nếu bạn đang sử dụng một máy nhà nước cho ứng dụng của bạn, chẳng hạn như meteor-router, bạn có thể sử dụng một mẫu và cư nó với chương trình sắp tới hoặc qua phụ thuộc vào trạng thái ứng dụng.

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