我试图设置第一页加载到我的meteor应用程序中,具体取决于用户是否已注册。 (如果用户未登录,请加载x模板,否则加载signIn模板)。
我遇到的问题是我的登录模板有其他模板(恢复密码和注册)的链接,这些模板无法正常工作(页面总是留在登录模板中,可能是我的#34;如果是currentUser& #34;条款)。可能我是以错误的方式接近它。
知道如何设置第一页加载?这是我的HTML:
Router.route ('/home')
Router.route('/', { template: 'home'});
Router.configure({layoutTemplate: 'main'});
Router.route('/findEvent');
Router.route('/board');
这些是我的路线。 Myapp.js:
Thread
答案 0 :(得分:1)
您需要指定哪个路径呈现这样的模板:
Router.configure({
layoutTemplate:'mainTemplateName',
loadingTemplate: 'loadingTempName'
});
Router.route('/', function() {
this.render('home');
});
Router.route('/another-route', function() {
this.render('anotherTemplate');
});
任何这些模板都会呈现给{{> yield}}所以,如果你在if currentUser
内,它将无法为非用户呈现这些。
修改强>
您的主/布局模板应包含布局的主要元素,如导航栏,页脚,侧边栏等。它们仅在用户进入网站时呈现一次。 {{> yield}}指定当用户转到其他路径时其余模板应呈现的位置,而不更改/重新呈现布局/主模板中的元素
修改-2 强> 在您的主模板中,您有:
{{#if currentUser}}
{{> header}}
{{> yield}}
{{else}}
{{> entrySignUp}}
{{/if}}
表示铁的{{> yield}}
:路由器仅适用于已登录的用户。您需要为所有访问者提供收益,以便用户可以转到其他路由/铁路由器可以呈现其他模板,如您在问题中写入的恢复密码/注册。因此,请在{{> yield}}
之外添加{{#if currentUser}}
,并在必要时将其用于其他任何地方。例如:
主要模板:
<template name="layout">
{{> navigation}}
<div class="content-area">
{{> yield}}
</div>
</template>
<template name="navigation">
This will always be visible in every route according to the template above.
</template>
您还可以检查router.js以确定要呈现的内容:
Router.route('/', function() {
if(Meteor.user()){
this.render('someTemplate') //for logged in user in route '/'
} else {
this.render('entrySignUp');
}
});
Router.route('/findEvent');
Router.route('/board');
在这种情况下,无论您走哪条路线,上面的模板都会呈现给{{> yield}}
,而不是取决于用户是否,而是{{&gt;对于已登录和已注销的用户,应该可以使用yield}}实际上有一个地方可以为非用户呈现模板。