2015-10-26 95 views
3

我不知道爲什麼,但我的佈局渲染了兩次。流星路由器佈局渲染兩次

這裏是我的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({}); 
    } 
}); 

回答

3

您不需要在正文中渲染布局。

路由器將負責渲染。

如此,只是有

<body> 
</body> 

或者甚至不用它。

編輯:感謝基思,我對自己的問題有了更好的理解。這裏是他的評論:

有一點要記住,你在流星中寫的所有html都不保存爲html。它都被轉換爲javascript。像index.html這樣的東西不會被推送到瀏覽器。流星只是把你寫的所有html轉換成javascript,並根據你的代碼所描述的呈現它需要的東西。這是知道如何動態地改變和重新生成html

對於像更改標題頭或添加元等等,我們可以直接在javascript中做。

ex:Meteor - Setting the document title