2014-09-19 115 views
4

我有2个模板:如何编写铁路路由器嵌套模板?

1)mainLayout.html - >必须由所有页面使用的总体布局。 (如网页标题,导航栏,页脚)

Router.configure({ 
    layoutTemplate: 'mainLayout' 
}) 

<template name="mainLayout"> 
    {{> header}} 
    <div class="container-fluid"> 
    {{> yield}} 
    </div> 
</template> 

2)specialLayout.html - 这是继承主的layout.html但额外的模板(如侧/标签菜单)

我应该如何定义>自定义布局specialLayout?请注意,specialLayout应具有在mainLayout中定义的标题,导航栏和页脚。

如果我有路线X想要使用specialLayout,我该怎么写呢?

回答

6

我不知道在这个时刻任何简单的方法,但大多数事情可以由几个较小优雅的方式来实现:

  • 您的公用部分复制到不同的模板,并在这两种布局使用它们,即:

    <template name="mainLayout"> 
        {{> navbar}} 
        <div> 
        {{> content}} 
        </div> 
        {{> footer}} 
    </template> 
    
    <template name="specialLayout"> 
        {{> navbar}} 
        <div> 
        {{> content}} 
        {{> sidebar}} 
        </div> 
        {{> footer}} 
    </template> 
    
  • 让您的特殊部分主要布局,而不是单独的一个选项:

    <template name="mainLayout"> 
        ... 
        <div> 
        {{#if layout.renderSidebar}} 
         <div class="col-2">> 
         {{> yield 'sidebar'}} 
         </div> 
        {{/if}} 
    
        <div class="{{#if layout.renderSidebar}} col-10 {{else}} col-12 {{/if}}"> 
         {{> yield}} 
        </div> 
        </div> 
        ... 
    </template> 
    

    然后在适当的路线使得能够在侧边栏data

    this.map('pathName', { 
        ... 
        data: function() { 
        return { 
         layout: {renderSidebar: true}, 
         ... 
        }; 
        }, 
    });