具有流路由器布局的流星被渲染两次
meteor with flow router layout is rendered twice
我不知道为什么我的布局被渲染了两次。
这是我的 index.html:
<head>
<title>title</title>
</head>
<body>
{{>layout}}
</body>
这是我的布局:
<template name="layout">
{{#if canShow}}
{{>Template.dynamic template=content}}
{{else}}
{{> loginButtons}}
{{/if}}
</template>
所以这里没有路由我的模板只显示一次。
这是我的路线:
FlowRouter.route('/', {
action() {
BlazeLayout.render("layout", {
content: "home"
});
}
});
但是使用这条路线我的模板会第二次显示。
这是我的帮手,我认为这个问题与此无关,但我们永远不知道。
Template.home.onCreated(function() {
this.autorun(() => {
this.subscribe('post');
});
});
Template.layout.helpers({
canShow() {
return !!Meteor.user();
}
});
Template.home.helpers({
cats() {
return Posts.find({});
}
});
您不需要在 body 中呈现布局。
路由器将负责渲染。
所以,只要
<body>
</body>
或者根本没有。
编辑:感谢 Keith,我对我的问题有了更好的理解。这是他的评论:
有一点要记住,你在 meteor 中写的所有 html 都不会保存为 html。全部转换为 javascript。 index.html 之类的东西不会被推送到浏览器。 Meteor 只是将您编写的所有 html 转换为 javascript 并根据您的代码所说呈现它需要的内容。这就是它知道动态更改和重新渲染的方式 html
对于更改头部标题或添加元数据等,我们可以直接在 javascript.
中进行
我不知道为什么我的布局被渲染了两次。
这是我的 index.html:
<head>
<title>title</title>
</head>
<body>
{{>layout}}
</body>
这是我的布局:
<template name="layout">
{{#if canShow}}
{{>Template.dynamic template=content}}
{{else}}
{{> loginButtons}}
{{/if}}
</template>
所以这里没有路由我的模板只显示一次。
这是我的路线:
FlowRouter.route('/', {
action() {
BlazeLayout.render("layout", {
content: "home"
});
}
});
但是使用这条路线我的模板会第二次显示。
这是我的帮手,我认为这个问题与此无关,但我们永远不知道。
Template.home.onCreated(function() {
this.autorun(() => {
this.subscribe('post');
});
});
Template.layout.helpers({
canShow() {
return !!Meteor.user();
}
});
Template.home.helpers({
cats() {
return Posts.find({});
}
});
您不需要在 body 中呈现布局。
路由器将负责渲染。
所以,只要
<body>
</body>
或者根本没有。
编辑:感谢 Keith,我对我的问题有了更好的理解。这是他的评论:
有一点要记住,你在 meteor 中写的所有 html 都不会保存为 html。全部转换为 javascript。 index.html 之类的东西不会被推送到浏览器。 Meteor 只是将您编写的所有 html 转换为 javascript 并根据您的代码所说呈现它需要的内容。这就是它知道动态更改和重新渲染的方式 html
对于更改头部标题或添加元数据等,我们可以直接在 javascript.
中进行