将上下文和标记注入另一个模板

时间:2016-01-16 22:09:54

标签: meteor meteor-blaze spacebars

我的流星应用程序具有以下基本布局:

<template name="layout">
  {{> header}}
  {{> yield}}
  {{> footer}}
</template>

我的header模板包含一个全角标题:

<template name="header">
    <div>
        <!--implementation of full-width header-->
        <h1>{{pageTitle}}</h1>
        <!--insert custom html here, e.g. search input or options (see screenshot)-->
    </div>
</template>

然后,我有多个yield模板,这是主要内容所在的位置。 对于我的每个yield模板,我希望能够将自定义内容&#34;加载到&#34;我的header模板:

  • 设置pageTitle属性,因此我在每个路由页面上都有自定义标题
  • 插入一些html内容,例如要显示一些扩展选项(在此示例中,它是关于过滤查询结果,但基本上是它的html内容)

最好的方法是什么?

为了更好地理解,我提供了页面如何显示的截图: Screenshot Skeleton

修改

我想出了以下内容。我在布局中添加了另一个基本模板,我们称之为headerYield

<template name="layout">
  {{> header}}
  {{> headerYield}}
  {{> yield}}
  {{> footer}}
</template>

所有自定义标记都会去那里,但缺点是每个视图需要2个自定义模板。

1 个答案:

答案 0 :(得分:0)

这个问题并不清楚。问题是如何包含标题模板?如果是这样那么这就是答案......

<template name="header">
    <div> <!-- abosolute position full div --> </div>
    <!-- markup here brah --> 
</template>

现在,如果问题是如何包含页面标题?如果是这样那么这就是答案......

Router.route('/user', {
  onAfterAction: function() {
    document.title = 'page title';
  }
});

这假设您已安装铁路由器包。 Iron路由器只控制在查看特定页面时呈现的模板。例如路线&#34; / user&#34;可以发送到您选择的任何模板。如果您需要有关如何安装铁路由器的信息或它可以做什么,您可以看到他们的文档。它对于流星应用来说是必要的:  iron router

<强>更新

在查看您的个人资料后,您的其他问题包括铁路由器,因此您之前使用过它。所以现在我真的很困惑你的问题是什么。