Meteor JS不呈现主模板的页面标题

时间:2015-06-28 15:45:13

标签: html templates meteor

我正在使用带有{{> yield}}语句的主模板来呈现我的Meteor JS页面。这就是它的样子:

<template name="main">
    <head>
        <meta charset="utf-8">
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Title</title>
        <link rel="author" href="humans.txt">

        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <link rel="stylesheet" href="css/bootstrap-theme.min.css">

        <link rel="stylesheet" href="css/spacers.css">
    </head>
    <body>
        <div class="container">
            {{> yield}}
        </div>

        <!-- Bootstrap JS -->
        <script src="js/jquery.min.js"></script>
        <script src="js/bootstrap.min.js"></script>
    </body>
</template>

有了它,我渲染我的实际页面e.q。:

<template name="home">
    HOME
</template>

这一切都很有用,因为我使用Iron Router就是这样:

Router.configure({
    layoutTemplate: "main",
    notFoundTemplate: "404"
});

Router.route("/", function() {
    this.render("home");
});

我面临的问题是页面标题没有被渲染。我希望页面标题是&#34;标题&#34;因为我已将<head> -> <title>定义为&#34; Title&#34; (正如你在我的主模板中看到的那样)。

这里奇怪的是所有的CSS都会加载,这表明<head>部分至少部分地被渲染了。

1 个答案:

答案 0 :(得分:1)

head在特殊过程中呈现。我们称之为捆绑,因为缺少一个更好的词。在捆绑 -process中,所有bodyhead元素的内容将被放入将首先提供的HTML中。在客户端上加载流星后,iron-router会将模板的内容附加到body。仅在根级别搜索这些元素。加载了link标记,因为大多数浏览器(或多或少)都不关心它们出现的位置。

我会做这样的事情:

client/main.html

<head>
    <meta charset="utf-8">
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Title</title>
    <link rel="author" href="humans.txt">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/bootstrap-theme.min.css">

    <link rel="stylesheet" href="css/spacers.css">
</head>
<body>
    <!-- Bootstrap JS -->
    <script src="js/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
</body>

client/templates/main.html

<template name="main">
    <div class="container">
        {{> yield}}
    </div>
</template>