Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 何时创建模板?_Meteor - Fatal编程技术网

Meteor 何时创建模板?

Meteor 何时创建模板?,meteor,Meteor,例如,我有一个列表,它有页眉、正文、页脚,正文有项目 所以我创造了这样的东西 <template name="List"> {{> ListHeader}} {{> ListBody data}} {{> ListFooter}} </template> <template name="ListBody"> <div class="list-body"> {{#each items}} {{> ListI

例如,我有一个列表,它有页眉、正文、页脚,正文有项目

所以我创造了这样的东西

<template name="List">
 {{> ListHeader}}
 {{> ListBody data}}
 {{> ListFooter}}
</template>
<template name="ListBody">
 <div class="list-body">
   {{#each items}}
   {{> ListItem data}}
   {{/each}}
 </div>
</template>
然后在
Template.List.helpers
中,再次定义
showEdit
,并将其传递给
ListBody

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

{{> ListBody showEdit=showEdit showDelete=true}}
再次在ListBody中定义showEdit并将其传递给ListItem

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

{{> ListItem showEdit=showEdit showDelete=true}}
所以我觉得我做错了什么。也许我不应该创建这么多模板? 把它们放在一个地方


我应该什么时候创建模板?最佳做法是什么?

这只是个人喜好。我认为创建像您这样多的模板没有问题。你为什么写你认为你做错了什么

正如您已经了解到的,单独的模板可能会有不同的数据上下文,这可能会造成混乱/混乱。然而,在许多情况下,这是可取的,并且可以使代码更易于维护和可读

如您的示例所示:

{{#each items}}
  {{> listItem}}
{{/each}}
在这种情况下,将为数组中的每个项自动设置传递到
listItem
的数据上下文。(注意,这样做不需要传递
数据
),因此在这里使用新模板是有意义的

使用单独模板的另一个原因是可重用性。随着项目的发展,这一点变得越来越重要,提前尝试和思考哪些元素可以在其他地方重用会有很大帮助

如图所示,调用模板时可以将数据传递到模板中。这既不好也不坏,但我会小心做得太多,因为这可能会导致过于复杂的事情。一般来说,您需要干净、模块化的模板,当您查看它们时,这些模板是有意义的,而不是让您四处寻找,试图找出它们为什么没有达到您期望的效果

为此,请看一看。这些组合可以将模板转化为强大的模块化组件。我是根据经验说的,当我说你以后会感谢自己养成了这样构建模板的习惯

最后,解决这个问题的最好方法是四处玩一玩,浏览其他项目,看看他们做了什么。警告一句:围绕模板结构的最佳实践随着Meteor的成长而改变,因此一些在线建议可能不会利用更新、更好的方法

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