我正在尝试将第一页设置为加载到我的流星应用程序中,这取决于用户是否注册。(如果用户未登录,则加载x模板,否则加载signIn模板)。
我遇到的问题是,我的登录模板有指向其他模板(恢复密码和注册)的链接,这些模板不起作用(页面总是停留在登录模板中,可能是通过我的"if currentUser“子句)。可能是我走错路了。
知道如何将第一页设置为加载吗?这是我的html:
<template name="main">
{{#if currentUser}}
{{> header}}
{{> yield}}
{{else}}
{{> entrySignUp}}
{{/if}}
</template>
<template name="home">
{{#if eventJoined}}
{{> board}}
{{else}}
{{> findEvent}}
{{/if}}
</template>这是我的路线。Myapp.js:
Router.route ('/home')
Router.route('/', { template: 'home'});
Router.configure({layoutTemplate: 'main'});
Router.route('/findEvent');
Router.route('/board');发布于 2016-05-18 18:46:07
您需要指定哪条路由呈现如下模板:
Router.configure({
layoutTemplate:'mainTemplateName',
loadingTemplate: 'loadingTempName'
});
Router.route('/', function() {
this.render('home');
});
Router.route('/another-route', function() {
this.render('anotherTemplate');
});这些模板中的任何一个都将呈现给{> render },因此,如果在if currentUser中有它,它将无法为非用户呈现这些模板。
编辑
您的主/布局模板应该包含布局的主要元素,如导航栏、页脚、侧边栏等。当用户进入站点时,它们只呈现一次。{{>收益率}}指定当用户进入其他路由时,其余模板应呈现在何处,而不更改/重新呈现布局/主模板中的元素。
编辑-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}},而不是取决于它是否是一个用户,而是{> logged }对于登录和注销铁路由器的用户来说都是可用的,在您的示例中,实际上有一个地方可以为无用户呈现模板。
https://stackoverflow.com/questions/37288746
复制相似问题