我的应用由两个页面组成,主页和仪表板。在主页上,我想显示登录(顶部导航)和注册(主体)。如果用户已登录,则显示仪表板。在仪表板上,我想显示注销选项。注销时显示主页。
问题:当我尝试更新仪表板模板时,所有内容最终都直接进入导航栏。同样令人困惑的是,主页页面的正文内容仍在仪表板页面中呈现。我显然忽略了一些东西,但我不知道这是我的代码中的错误还是我对模板和路由的理解中的错误。
使用中:Iron-Router、Accounts-UI 和 Accounts-password、Twbs:bootstrap。
下面插入的是三个主要模板 Master、Homepage 和 Dashboard。
提前感谢您提供的任何帮助!
带有如果登录逻辑的主模板
<template name="MasterLayout">
{{> yield}}
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">THE BRAND</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
{{#if currentUser}}
{{> Dashboard}}
{{else}}
{{> Login}}
{{/if}}
</div><!--/.navbar-collapse -->
</div>
</nav>
</template>
主页包含主要内容
<template name="Homepage">
<div class="jumbotron">
<div class="container">
<h1>Get it now..</h1>
<p>Donec id elit</p>
{{#if currentUser}}
hello
{{else}}
{{> Register}}
{{/if}}
</div>
</div>
</template>
仪表板包含占位符文本
<template name="Dashboard">
<ul class="nav navbar-nav">
<li class="navbar-text">Navigation Placeholder</li>
<li><a href="#" class="logout">Logout</a></li>
</ul>
</template>
我创建了以下控制器;
主页
HomepageController = RouteController.extend({
layoutTemplate: 'MasterLayout',
subscriptions: function() {
},
action: function() {
this.render('Homepage');
}
});
仪表板
DashboardController = RouteController.extend({
layoutTemplate: 'Dashboard',
subscriptions: function () {
},
data: function () {
},
action: function () {
this.render('Dashboard', { /* data: {} */});
}
});