2015-05-04 2 views
0

У меня есть файл макета по умолчанию meteorjs, и я направляюсь на разные страницы с помощью железного маршрута. То, что я пытаюсь сделать, - это не показывать навигацию на главной странице. Я могу сделать это, используя два отдельных файла, но я хочу сделать это с помощью одного файла.Условия использования MeteorJs для отображения другого шаблона

<template name="layout"> 

    <head> 
     <title> 
      {{title}} 
     </title> 
    </head> 
    <body> 

     {{> navigation }} 

     <div class="nav_padding"> 
      {{> yield}} 
     </div> 


     {{> footer}} 

    </body> 

    </template> 

Мой маршрут

Router.route('/', function(){ 
     this.layout('homeLayout'); 
     this.render('home', { 
      data:{title: 'some'} 
     }); 
    }); 

ответ

2

Есть несколько способов, вы можете сделать это, но вот простое решение ...

Добавить помощник в шаблон макета, который указывает на то, нав должны быть показаны на основе имени маршрута:

Template.myLayout.helpers({ 
    showNav: function() { 
    return Router.current().route.getName() !== 'home'; 
    } 
}); 

Изменить шаблон условно показать navigation шаблона:

<template name="myLayout"> 
    {{#if showNav}} 
    {{> navigation }} 
    {{/if}} 
    <div class="nav_padding"> 
    {{> yield}} 
    </div> 
    {{> footer}} 
</template> 

Для того, чтобы ваш маршрут будет named вам, возможно, придется изменить свой маршрут, чтобы что-то вроде этого:

Router.route('/', { 
    name: 'home', 
    template: 'home', 
    layoutTemplate: 'myLayout', 
    data: {title: 'some'} 
}); 
+0

изменить тело на макет, потому что я содержал все это в макет шаблона имени – Nakib

+0

Навигация не отображается ни на одной странице – Nakib

+0

Я обновил ответ - если вы используете ИК-порт, вы должны удалить свое тело и поместить его содержимое в свой макет (ы) макета. –

Смежные вопросы