如何在 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 一个字符串对应于您创建的模板的名称。
假设我有一个要显示图表的小部件和另一个要在典型仪表板中显示 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 一个字符串对应于您创建的模板的名称。