Javascript 使用if在Meteor.js的不同页面上具有不同的元素

Javascript 使用if在Meteor.js的不同页面上具有不同的元素,javascript,meteor,Javascript,Meteor,我有一个特定的div类(landing),我只希望它出现在某些路线上。我使用的是一个“main”模板,它有我的页眉和页脚(每个页面之间都包含一个>yield的唯一代码)。但是,标题中有一个元素我只想显示在登录页上(“/”路由) 我用的是铁制路由器 有没有办法用流星中的if轻松做到这一点?谢谢 您可以在着陆路线的onBeforeAction中放置一个会话标志,然后在标题上检查该会话是否有效并显示div <template name='main'> <header>{{

我有一个特定的div类(landing),我只希望它出现在某些路线上。我使用的是一个“main”模板,它有我的页眉和页脚(每个页面之间都包含一个>yield的唯一代码)。但是,标题中有一个元素我只想显示在登录页上(“/”路由)

我用的是铁制路由器


有没有办法用流星中的if轻松做到这一点?谢谢

您可以在着陆路线的
onBeforeAction
中放置一个会话标志,然后在标题上检查该会话是否有效并显示
div

<template name='main'>
   <header>{{#if helper_showDivFlag}}<div></div>{{/if}}</header>
</template>

helper_showDivFlag: function() {
    return Router.current().route.getName() == 'landing'
}
像这样的

this.route("landing", {
    path: "/landing", 
    onBeforeAction: function () {
        Session.set('showDiv', true);  
    }
});

<template name='main'>
   <header>{{#if helper_getShowDivFlag}}<div></div>{{/if}}</header>
</template>

helper_getShowDivFlag: function() {
   return Session.get('showDiv');
}
或者,如果您不想编写代码,请使用此选项并检查路由器:D

<template name='main'>
       <header>{{#if isActiveRoute 'landing' }}<div></div>{{/if}}</header>
</template>

{{{#如果是活动的'landing'}{{/if}}

您希望在标头模板上创建一个帮助器,该帮助器可以反应性地检查当前路由。我已经有一段时间没有使用Iron路由器了,但我相信
Router.current().route.getName()
是被动的。请尝试以下操作:

Template.header.helpers({
  onLanding() {
    return Router.current().route.getName() === '<landingRouteName>';
  },
});

<template name="header">
  {{#if onLanding}}
  <div>I should only show on the landing page!</div>
  {{/if}}
</template>
Template.header.helpers({
onLanding(){
返回Router.current().route.getName()='';
},
});
{{#如果是onLanding}
我应该只显示在登录页上!
{{/if}
或者,您也可以使用helper应用一个类,比如

<div class="{{#if onLanding}}isVisible{{/if}}>...</div>

以下是一个通用路由名称平等性测试帮助程序:

Template.registerHelper('routeEquals',function(name){
  return Router.current().route.getName() === name;
});
然后在您可以执行的任何模板中(例如):


您可以使用路线的
数据
属性来完成此操作

Router.route('/', {
    name: 'home',
    data: function() {
        return {
            showMySpecialHeaderWidget: true
        };
    }
});
然后可以在模板中访问此数据属性

<template name="main">
    <header>
        {{#if showMySpecialHeaderWidget}}
            <div>My special header widget</div>
        {{/if}}
    </header>

    {{> yield}}
</template>

{{#如果showMySpecialHeaderWidget}
我的特殊标题小部件
{{/if}
{{>产量}
使用这种方法,如果您更改了路由的名称,就不必担心更新模板,而且通过包含此数据属性,可以很容易地在多个路由上显示您的小部件

<template name="main">
    <header>
        {{#if showMySpecialHeaderWidget}}
            <div>My special header widget</div>
        {{/if}}
    </header>

    {{> yield}}
</template>