将模板名称作为字符串传递给Meteor / Handlebars中的另一个模板

时间:2013-12-13 07:23:55

标签: meteor handlebars.js

我有一个包含第二个模板的模板,我想制作第二个模板变量ie。它可以根据我传递的模板名称而改变。

<template name="template1">
    <div>
        {{> template2}}
    </div>
</template>

因此,当我的主页显示template1时,我想指定用于template2的模板。

<template name="main">
    {{> template1 TemplateArgs }}
</template>

我知道如何设置TemplateArgs - 它将包含我想用于template2的模板的名称。

这可能吗?

1 个答案:

答案 0 :(得分:1)

meteor的未来版本允许使用新的Meteor UI功能。目前,您需要以不同的方式手动执行此操作。请参阅Meteor set overall template context

Meteor UI

当心流星UI仍处于测试状态,并且有点儿麻烦。有关post in the references

的更多详情

如果您使用meteor UI(可以在预览模式下使用)

meteor --release template-engine-preview-5

然后你可以做这样的事情

Template.main.template1 = function (value2) {
    return Template["template2"].withData({foo: "bar", value2: value2}));
}

然后html喜欢

{{>template1 "valueofvalue2"}}

当前版本/ Spark渲染

当前版本的meteor有一种方法,但它不会与UI版本一起使用,因为Meteor.render将逐步淘汰以支持使用DOM对象

Template.main.template1 = function(value2) {
    return Meteor.render(Template.template2({foo: "bar", value2: value2});
}

然后在你的HTML中这样的东西。您可能必须使用数据才能使其正常工作,但这类似

{{template1 "value2"}}

参考文献: