如何在Meteor中嵌套HTML片段(部分)?

时间:2013-12-19 00:42:15

标签: html meteor spacebars

有没有办法在Meteor中嵌套部分(HTML片段)?

为什么我不能说

<template name="foo">hello world!</template>
<template name="bar">{{> foo}}</template>
<template name="baz">{{> bar}}</template>

这在任何HTML页面中都很常见,而且它是Mustache和Handlebars的常规功能。为什么Meteor在尝试时会默默地失败?

2 个答案:

答案 0 :(得分:0)

澄清sbking意味着......

排行榜示例有一个leaderboard.html文件 https://github.com/meteor/meteor/blob/devel/examples/leaderboard/leaderboard.html

<head>
  <title>Leaderboard</title>
</head>

<body>
  <div id="outer">
    {{> leaderboard}}
  </div>
</body>

<template name="leaderboard">
  <div class="leaderboard">
    {{#each players}}
      {{> player}}
    {{/each}}
  </div>

  ...
</template>

<template name="player">
  ...
</template>

但是这可以分为许多文件,因为流星会查看所有这些文件。例如

leaderboard.html会有

<template name="leaderboard">
  <div class="leaderboard">
    {{#each players}}
      {{> player}}
    {{/each}}
  </div>
  ...
</template>

和player.html会有

<template name="player>
   ...
</template>

它仍然可以工作!!!!黑魔法!

答案 1 :(得分:0)

完整的Meteor文档提供了一些很好的简单示例,可以在this部分找到,还有一些其他有用的信息可以帮助您入门。基本上,您需要确保做的唯一事情就是让您的顶级模板包含在<body>标记中,如下所示:

<body>
    {{> a}}
</body>

<template name="a">
    Top-Level Template
</template>

然后,您可以根据需要深入嵌套到最深的模板:

<template name="a">
    Top-Level Template
    {{> b}}
</template>

<template name="b">
    Mid-Level Template
    {{> c}}
</template>

<template name="c">
    ...
</template>

此外,您的模板不需要在与<body>定义相同的HTML文件中定义。它们都可以在同一个文件中定义,也可以为每个模板分成不同的文件(一旦模板变得足够大和复杂,这就变得更好了。)