流星动态模板

时间:2015-03-16 19:46:55

标签: meteor

所以我有以下模板,我希望根据会话变量的值呈现不同的模板

<template name = "selectFrame">
    <div class = "container">
        <div class = "frameCarousel">
            {{> Template.dynamic template=active data=this}}
        </div>
    </div>
</template>

我的会话变量board是从之前的模板设置的,并根据需要进行更改。我将模板的值设置为活动,模板助手可以在下面看到。

Template.selectFrame.helpers({
    active: function() {
        return Session.get('board');
    }
});
Template.body.events({
'click .btn-primary': function (event) {
    event.preventDefault();
    console.log(event.target.id);
    Session.set('board', event.target.id);
    }
});

board的值设置为我想要动态的四个不同模板的名称。目前,仅返回会话默认值及其对应的模板。

需要添加什么才能让每个模板显示为我的会话变量?

2 个答案:

答案 0 :(得分:0)

如果只有4个模板,可以使用if-else语句作为典型解决方案。对于许多模板的情况,我不确定解决方案。只是等待一些专业人士的帮助:)

答案 1 :(得分:0)

没有看到代码中的所有内容,我不确定你做错了什么,但希望这个例子很简单,足以引导你。我试图保持HTML和JS尽可能接近你提供的内容。

<head>
  <title>Meteor Dynamic Template</title>
</head>

<body>
<h1>Meteor Dynamic Template</h1>
{{> selectFrame}}

<br>
<button class="btn-primary" id="dynamic1">Set Template 1</button>
<button class="btn-primary" id="dynamic2">Set Template 2</button>
<button class="btn-primary" id="dynamic3">Set Template 3</button>
<button class="btn-primary" id="dynamic4">Set Template 4</button>
</body>

<template name="selectFrame">
    <div class="container">
        <div class="frameCarousel">
            {{> Template.dynamic template=active data=this}}
        </div>
    </div>
</template>

<template name="dynamic1">
  This is dynamic template 1.
</template>

<template name="dynamic2">
  This is dynamic template 2.
</template>

<template name="dynamic3">
  This is dynamic template 3.
</template>

<template name="dynamic4">
  This is dynamic template 4.
</template>

和js代码:

if (Meteor.isClient) {
  Template.body.created = function() {
    Session.set("board", "dynamic1");
  }

  Template.selectFrame.helpers({
    active: function() {
      return Session.get('board');
    }
  });

  Template.body.events({
    'click .btn-primary': function (event) {
      event.preventDefault();
      console.log(event.target.id);
      Session.set('board', event.target.id);
    }
  });
}

以下是运行此示例的MeteorPad: http://meteorpad.com/pad/CAtoogYaqHxPKecvA/

相关问题