我在Meteor中有三个简单的模板,在服务器上有一个名称的任意组合。我希望能够根据集合中的哪些名称动态渲染这些模板。
目前我正在尝试通过使用客户端订阅Collection来完成此操作,并通过模板函数访问这些名称。不幸的是,如果我尝试在名称上运行“>”,Meteor会尝试呈现变量名称而不是其值所指向的模板。
因此,不是在 template1 , template2 和 template3 中呈现html,输出只是页面上的名称:“template1 template2 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>
答案 0 :(得分:4)
您可以制作render
帮助:
Handlebars.registerHelper('render', function(name, options) {
if (Template[name])
return new Handlebars.SafeString(Template[name]());
});
并与
一起使用{{render templateName}}
答案 1 :(得分:0)
您可能想尝试这个
你的HTML中的
<body>
{{> templateToRender}}
</body>
<template name="templateToRender">
{{! use below to detect which template to render}}
{{#if templateName "template1"}}
{{> template1}}
{{/if}}
{{#if templateName "template2"}}
{{> template3}}
{{/if}}
{{#if templateName "template3"}}
{{> template3}}
{{/if}}
</template
<template name="template1">
<p>this is template1</p>
</template>
<template name="template2">
<p>this is template2</p>
</template>
<template name="template3">
<p>this is template3</p>
</template>
你脚本中的
Template.templateToRender.templateName = (which) ->
# if user have a field like templateName you can do things like
tmplName = Meteor.user().templateName
# Session.equals will cause a template render if condition is true.
Session.equals which, tmplName
答案 2 :(得分:0)
Meteor 1.0今天刚刚问世,我只是想更新2014年:)
https://docs.meteor.com/#/full/template_dynamic
{{> Template.dynamic template=template [data=data] }}
样本用法:
{{#each kitten}}
{{> Template.dynamic template=kitten_type data=this }}
{{/each}}