2013-01-06 11 views
6

Używam Meteor 0.5.2 i próbuję rozwiązać to, co wydaje mi się oczywistym schematem, który powinien mieć proste rozwiązanie.Czy istnieje sposób przekazania parametru do szablonu kierownicy w Meteor?

Mam szablon, który powinien zwrócić różne porcje danych w każdej instancji szablonu.

Na przykład - mam szablon pokazujący program telewizyjny - pokaż według programu.

Następnie należy wyświetlić dwie instancje tego samego szablonu z różnymi danymi - jedną z wcześniejszymi pokazami i jedną z nadchodzącymi pokazami.

Więc mam szablonu programu TV:

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

Idealnie chciałbym zrobić coś takiego:

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

przekazać parametr do tv_program szablonu instancji, że mogę odczytać z JavaScript i dostosowanie zapytania mongo.

Obecnie mam kopię/wkleiłem mój kod szablonu/js i dostosowałem zapytania mongo, ale musi być lepszy sposób.

Zajrzałem do części/pomocników z argumentami, ale to nie wydaje się być rozwiązaniem mojego problemu.

Dzięki Władimir

Odpowiedz

6

Teraz zbliża się do problemu w złym poziomie. Zamiast próbować powiedzieć swojemu kodowi, co zrobić z szablonami, powinieneś powiedzieć szablonowi, co zrobić z kodem. Na przykład:

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

Dzięki za wskazanie mnie w tym kierunku Rahul. Przefasowałem mój kod, tak jak sugerowałeś. Po jego zakończeniu pozostawiam fragment kodu HTML, który jest identyczny w obu moich szablonach (last_shows, nadchodzące_shows szablony w przykładzie - powinny wyglądać tak samo, a prawdziwy kod szablonu jest złożony z obrazami i danymi związanymi z użytkownikiem). Sądzę, że jest w porządku, ponieważ lepiej mieć nadmiarowy kod w moich widokach niż w JavaScript "kontroler/model". – vladimirp

+0

Czy zamiast tego możesz przenieść zduplikowany kod do szablonu 'show'? –

+0

Właściwie mogę to zrobić. Mój prawdziwy kod różni się od prostego przykładu, którego użyłem w moim pytaniu. Dzięki, Dean. – vladimirp

0

Jeśli używasz komputera stanu dla aplikacji, takich jak meteor-router, można użyć jednego szablonu i wypełnić go z nadchodzących lub ostatnich pokazach w zależności od stanu aplikacji.

Powiązane problemy