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