2

从这里的讨论中,

允许传入变量到 {{renderPages}} 助手

我正在尝试在现有 {{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 和流星路由器方法的回调函数来获取我正在寻找的模板并将其直接添加到相关 div 标记的方法。

就像是:

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

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

4

1 回答 1

0

当然。

客户端.js

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

主页.js

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

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

主页.html

<template name="home">
    {{#if isAdmin}}
            <h1>student</h1>
    {{/if}}
    <div id="inner_home">
    {{#if homeTemplateTools}}
      {{> homeTools}}
    {{/if}}
    {{#if homeTemplateAdmin}}
      {{> homeAdmin}}
    {{/if}}
    </div>
</template>
于 2013-03-23T05:11:21.607 回答