假设我有一个显示小部件的 Meteor 应用程序。小部件可以具有以下几种形式之一:
<template name="textWidget">
<h1>{{myTitle}}</h1>
<p>{{myTextContent}}</p>
</template>
<template name="imgWidget">
<h1>{{myTitle}}</h1>
<img src="{{myImagePath}}" />
</template>
<template name="listWidget">
<h1>{{myTitle}}</h1>
<ul>
{{#each items}}
{{> listWidgetItem}}
{{/each}}
</ul>
</template>
给定记录类型是否有渲染特定模板的好模式?
天真地,我可以做类似的事情:
<template name="masterTemplate">
{{#each widgets}}
{{#if widgetType "text"}}
{{> textWidget}}
{{else}}
{{#if widgetType "img"}}
{{> imgWidget}}
{{else}}
{{if ... }} ... {{/if}}
{{/if}}
{{#/if}}
{{/each}}
</template>
有一个像这样的助手:
Template.masterTemplate.widgetType = function(cmp) {
return cmp === this.data.type;
};
不过,这似乎是一种非常笨拙且不灵活的操作方式。我是否缺少此用例的明显库或设计模式?