2015-08-30 4 views
0

Например, у меня есть список, который имеет заголовок, тело, колонтитул, и тело имеет элементыКогда нужно создать шаблон?

поэтому я создать что-то вроде этого

<template name="List"> 
{{> ListHeader}} 
{{> ListBody data}} 
{{> ListFooter}} 
</template> 
<template name="ListBody"> 
<div class="list-body"> 
    {{#each items}} 
    {{> ListItem data}} 
    {{/each}} 
</div> 
</template> 

в ListItem, я буду показывать играть некоторые кнопки действий, как редактировать/удалять в соответствии с некоторыми данными инициализации.

поэтому станет очень сложным. Значит, я должен определить, когда я создаю List:

{{> List showEdit=true showDelete=true}} 

Тогда в Template.List.helpers, определить showEdit снова и передать его ListBody

Template.List.helpers({ 
    showEdit: return this.showEdit: 
}) 

{{> ListBody showEdit=showEdit showDelete=true}} 

снова определяют showEdit в ListBody и передать его в ListItem

Template.ListBody.helpers({ 
    showEdit: return this.showEdit: 
}) 

{{> ListItem showEdit=showEdit showDelete=true}} 

Так что я думаю, что я делаю что-то неправильно. Может быть, мне не нужно создавать так много шаблонов? просто положить их в одном месте?

Когда мне нужно создать шаблон? Какова наилучшая практика?

ответ

0

Как вы уже показали, вы понимаете, что отдельные шаблоны могут иметь разные контексты данных, которые могут быть запутывающими/беспорядочными. Однако во многих случаях это желательно и может сделать ваш код более удобным для обслуживания и более удобочитаемым.

Как и в вашем примере:

{{#each items}} 
    {{> listItem}} 
{{/each}} 

В этом случае контекст данных передается listItem автоматически устанавливается для каждого элемента массива. (Обратите внимание: вам не нужно проходить data, чтобы сделать это.) Таким образом, использование нового шаблона имеет смысл здесь.

Другой причиной использования отдельного шаблона является многократное использование. По мере роста проектов это становится более важным, и это помогает многому попытаться задуматься над тем, какие элементы вы можете использовать в других местах.

Как вы показали, вы можете передавать данные в шаблон, когда вы его вызываете. Это нехорошо или плохо, но я был бы осторожен в том, чтобы делать это слишком много, поскольку это может привести к чрезмерно сложным вещам. В общем, вам нужны чистые, модульные шаблоны, которые имеют смысл, когда вы смотрите на них, и не оставляйте вас на охоте, пытаясь понять, почему они не делают то, что вы ожидаете!

С этой целью ознакомьтесь с Template level subscriptions и по адресу Reactive variables. Вместе они могут превратить шаблоны в мощные модульные компоненты. Я говорю по опыту, когда говорю, что вы будете благодарить себя за то, что привыкли строить свои шаблоны позже.

Наконец, лучший способ понять это - немного поиграть и просмотреть другие проекты и посмотреть, что они сделали. Слово предупреждения: лучшие практики вокруг структуры шаблонов изменились, поскольку Метеор вырос, поэтому некоторые советы онлайн не могут использовать новые, лучшие способы делать вещи.

-1

Это только личное предпочтение. Я не думаю, что есть проблема с созданием как можно большего числа шаблонов. Почему вы пишете, что думаете, что делаете что-то не так?

Смежные вопросы