我正在使用带有{{> 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>
部分至少部分地被渲染了。
答案 0 :(得分:1)
head
在特殊过程中呈现。我们称之为捆绑,因为缺少一个更好的词。在捆绑 -process中,所有body
和head
元素的内容将被放入将首先提供的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>