使用meteor-router的布局

时间:2013-03-19 15:12:37

标签: layout meteor

从这里讨论,

Allow a passed in variable to {{renderPages}} helper

我正在尝试在现有的{{renderPage}};

中显示模板

我的用例:我有一个非常简单的高级身体模板

<template name="body">
    {{> header}}
    {{> notifications}}

    <div class="content" id="content">
        <div id="main-content">

            {{{renderPage}}}

        </div>
    </div>
    {{> footer}}

</template>

正如您所看到的,我的主要内容包含{{renderPage}}。当我设置路线时,这很有效:

 '/home': 'home'

路径找到模板“home”并用该模板替换renderPage。我想现在扩展它,看看路由模板是否可以放在特定的div中。

例如,在我的home.html模板中:

<template name="home">
        {{#if isAdmin}}
                <h1>student</h1>
        {{/if}}
        <div id="inner_home">
                  {{renderPage innerHome}}
         </div>
</template>

是否可以使用不同的路线/home/tools : 'home_tools渲染它的模板不在最高主要内容div中但在我的子div inner_home内?

编辑:

我正在评估一种方法,它只使用JQuery和meteor-router方法的回调函数来获取我正在寻找的模板,并将其直接添加到相关的div标签中。

类似的东西:

 var foundTemplate = _.template($('#item-template').html())
  $('#div_example').html(foundTemplate); //

如果有人有更好的方法,请告诉我。

1 个答案:

答案 0 :(得分:0)

不确定

client.js

Meteor.Router.add({
  '/home/tools': function() {
    Session.set("homeTemplate", "tools");
    return 'home';
  },
  '/home/admin': function() {
    Session.set("homeTemplate", "admin");
    return 'home';
  }
});

home.js

Template.home.homeTemplateTools = function() {
    return Session.equal("homeTemplate", "tools");
};

Template.home.homeTemplateAdmin = function() {
    return Session.equal("homeTemplate", "admin");
};

home.html的

<template name="home">
    {{#if isAdmin}}
            <h1>student</h1>
    {{/if}}
    <div id="inner_home">
    {{#if homeTemplateTools}}
      {{> homeTools}}
    {{/if}}
    {{#if homeTemplateAdmin}}
      {{> homeAdmin}}
    {{/if}}
    </div>
</template>