如何从模板名称集合中渲染流星模板?

J Y*_*ang 7 meteor

我在Meteor中有三个简单的模板,在服务器上有一个集合,它们的名称可以是任意组合.我希望能够根据集合中的哪些名称动态呈现这些模板.

目前我正在尝试通过使用客户端订阅Collection来完成此操作,并通过模板函数访问名称.不幸的是,如果我尝试在名称上运行">",Meteor会尝试渲染变量名而不是其值所指向的模板.

因此,不是在template1,template2template3中呈现html,而是输出仅仅是页面上的名称:"template1 template2 template3".

这是我一直在使用的代码,我希望有一种方法可以解决我的问题,而无需手动运行Meteor.render.

服务器js:

TemplatesToRender = new Meteor.Collection("templatesToRender");

TemplatesToRender.insert({templateName: "template3"});
TemplatesToRender.insert({templateName: "template2"});
Run Code Online (Sandbox Code Playgroud)

客户端html:

<body>
    {{#each templatesToRender}}
        {{> templateName}}           // meteor trying to render a template
                                     // called "templateName" instead of the 
                                     // variable inside templateName.
    {{/each}}
</body>

<template name="template1">
    <span>Template 1</span>
</template>

<template name="template2">
    <span>Template 2</span>
</template>

<template name="template3">
    <span>Template 3</span>
</template>
Run Code Online (Sandbox Code Playgroud)

Tom*_*man 4

你可以做一个render帮手:

 Handlebars.registerHelper('render', function(name, options) {
   if (Template[name])
     return new Handlebars.SafeString(Template[name]());
 });
Run Code Online (Sandbox Code Playgroud)

并与它一起使用

{{render templateName}}
Run Code Online (Sandbox Code Playgroud)