Meteor中网格图块的高级内容

时间:2015-10-01 09:00:57

标签: javascript node.js templates meteor grid-layout

我即将制作带有瓷砖的仪表板。

在Meteor中,我有一个集合Tiles。我的问题是每个磁贴应该有不同的内容。

我使用

将切片附加到我的模板
Template.grid.helpers({
  tiles: function() {
    return GridTiles.find();
  }
});

并使用

打印我的模板中的图块
{{#each tiles}}
  {{> gridItem}}
{{/each}}

因此,我可以在我的收藏集content中轻松制作字段Tiles,并在每个gridItem中打印此内容;但是,我的内容应该相当复杂。

一个磁贴有一些(自动)表单输入,另一个磁贴有一个包含数据的表(来自另一个集合),等等。

我确信我应该为每种不同类型的内容都有一个模板,例如

<template name="gridType1">
  <form ...
  </form>
</template>

<template name="gridType2">
  <table ...
  </table>
</template>

但是如何选择哪个模板应该在哪个磁贴中?我可以在我的Tiles集合中保存模板名称。但这是最聪明的吗?如何从集合中获得的名称中包含模板?

修改

我想我会用这样的东西做到这一点

<template name="gridItem">
  <div class="grid-item">
    <div class="grid-item-content">
        <a href="#" class="remove-tile">x</a>
        {{#if templateName}}
          {{> Template.dynamic template=templateName }}
        {{else}}
          <p>Change tile type</p>
          <ul>
            <li><a href="#">table</a></li>
            <li><a href="#">form inputs</a></li>
          </ul>
        {{/if}}
    </div>
  </div>
</template>

有意义吗?

1 个答案:

答案 0 :(得分:0)

Meteor支持动态模板。

所以

{{> Template.dynamic template=aHelperMethodThatWorksOutTheTemplateName [data=dataContextThatTheTemplateWillNeed] }}