如何在 Meteor 中包装小部件模板?

How can I wrap widget templates in Meteor?

假设我有一个要显示图表的小部件和另一个要在典型仪表板中显示 table 的小部件。由于小部件外部控件的一致性,我想将 bootstrap 面板放在一个模板中,该模板对所有小部件显示一致,类似于下面的模板:

<template name="widgetBox">
  <div class="col-xs-12 col-sm-6 col-md-4">
    <div class="panel panel-default">
      <div class="panel-heading">
        {{this.title}}
        <span class="pull-right clickable" data-effect="fadeOut"><i class="fa fa-chevron-down"></i></span>
      </div>
      <div class="panel-body">
        <!-- I want the widget to go here -->
      </div>
    </div>
  </div>
</template>

我不确定如何通过遍历集合来执行此操作,因为我想使用它们自己的模板来控制每个小部件主体的外观。例如,两个 table 视图小部件可能共享一个包含排序或过滤的模板,而两个图形小部件可能具有完全不同的要求和布局。

是否可以像上面的 "widgetBox" 模板一样使用样板 html,同时将另一个模板放入面板主体中?

当您希望一个外部模板重用多个内部模板时,您可以使用 router{{> yield}} 模式 or 使用 dynamic templates

前者通常用于母版页布局,尽管您可以在一个布局中有多个收益。

后者可能更适合小部件。

{{> Template.dynamic template=myTemplateName [data=data] }}

其中 myTemplateName 是一个辅助函数的名称,returns 一个字符串对应于您创建的模板的名称。