【问题标题】:Pass a template name as string to another template in Meteor/Handlebars将模板名称作为字符串传递给 Meteor/Handlebars 中的另一个模板
【发布时间】:2013-12-13 15:49:21
【问题描述】:

我有一个包含第二个模板的模板,我想创建第二个模板变量,即。它可以根据我作为模板名称传递的内容而改变。

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

所以当我的主页显示 template1 时,我想指定要用于 template2 的模板。

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

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

这可能吗?

【问题讨论】:

    标签: meteor handlebars.js


    【解决方案1】:

    未来版本的流星允许通过新的流星 UI 功能实现这一点。目前,您需要以不同的方式手动执行此操作。见Meteor set overall template context

    流星用户界面

    当心流星 UI 仍处于测试阶段,并且有点错误。更多详情请关注post in the references

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

    meteor --release template-engine-preview-5
    

    然后你可以做这样的事情

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

    然后像html一样

    {{>template1 "valueofvalue2"}}
    

    当前版本/Spark 渲染

    在当前版本的流星中有一种方法,但它不适用于 UI 版本,因为 Meteor.render 将被淘汰以支持使用 DOM 对象

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

    然后在您的 html 中添加类似的内容。您可能必须使用数据才能使其正常工作,但它是这样的

    {{template1 "value2"}}
    

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      • 2013-10-21
      相关资源
      最近更新 更多