【问题标题】:inject context and markup into another template将上下文和标记注入另一个模板
【发布时间】:2016-04-22 07:46:23
【问题描述】:

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

<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 模板,我希望能够将自定义内容“加载”到我的header 模板中:

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

最好的方法是什么?

为了更好地理解,我附上了页面外观的屏幕截图:

编辑

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

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

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

【问题讨论】:

    标签: meteor meteor-blaze spacebars


    【解决方案1】:

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

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

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

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

    这假设您已经安装了 Iron 路由器包。 Iron router 只控制查看特定页面时呈现的模板。例如,路由“/user”可以发送到您选择的任何模板。如果您想了解如何安装 Iron Router 或它可以做什么,您可以查看他们的文档。流星应用程序是必需的: iron router

    更新:

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

    【讨论】:

    • sry,我最初的问题有点令人困惑。我相应地更新了它。
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2023-03-12
    • 2021-06-22
    • 2018-12-15
    • 2012-06-14
    • 1970-01-01
    相关资源
    最近更新 更多