我在流星中有三个简单模板,服务器上有一个集合,它们的名字组合。我希望能够根据它们的名称在Collection中动态呈现这些模板。如何从模板名称集合渲染流星模板?
目前我正试图通过使用客户端来订阅集合,并通过模板函数来访问名称。不幸的是,如果我尝试在名称上运行“>”,Meteor会尝试渲染变量名称而不是其值。
因此,而不是渲染HTML中模板1,模板2和template3,输出仅仅是他们的页面上的名字:“模板1模板2 template3”。
这是我一直在使用的代码,我希望有一种方法可以解决我的问题,而无需手动运行Meteor.render。
服务器JS:
TemplatesToRender = new Meteor.Collection("templatesToRender");
TemplatesToRender.insert({templateName: "template3"});
TemplatesToRender.insert({templateName: "template2"});
客户端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>
+1伟大的解决方案! – Marc
这就是我正在寻找的,谢谢! –
这里的问题是内存管理,他重复生成模板,因为你调用了'Template [name]()'函数。这种方法很好,但在更换时不要正确移除模板。我测试这个,并且在插入和移除几千个fiv之后,您将获得50 mb的内存堆叠! –