Meteor上的启动页面

时间:2016-05-18 01:30:25

标签: javascript meteor

我试图设置第一页加载到我的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

1 个答案:

答案 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}}实际上有一个地方可以为非用户呈现模板。