Meteor 如何从数据库字符串动态创建Blaze模板

Meteor 如何从数据库字符串动态创建Blaze模板,meteor,viewmodel,meteor-blaze,Meteor,Viewmodel,Meteor Blaze,我正在使用Meteor的blaze viewmodel.org,几年前我发现了一种方法,可以将blaze模板和viewmodel保存在数据库中并动态渲染,但不幸的是,我丢失了代码,无法重新创建,因为它在任何地方都没有文档记录 我如何重现同样的行为 样本数据库 db.templates.insert({ name: "templateName", blaze: "Hello {{viewmodelNameHelper}}", view

我正在使用Meteor的blaze viewmodel.org,几年前我发现了一种方法,可以将blaze模板和viewmodel保存在数据库中并动态渲染,但不幸的是,我丢失了代码,无法重新创建,因为它在任何地方都没有文档记录

我如何重现同样的行为

样本数据库

db.templates.insert({
    name: "templateName",
    blaze: "Hello {{viewmodelNameHelper}}",
    viewmodel: " { onCreated() {console.log('oncreated hook')}, viewmodelNameHelper(){return 'Your Name!'} }"

});
viewContainer.html

<template name="viewContainer">
 {{ myRenderTemplateHelper  }}
</template>
输出

Hello Your Name!
请注意,Template.dynamic和Blaze.renderWithData()没有帮助,因为我需要将动态viewmodel对象附加到创建的模板实例。其中所有viewmodel帮助程序和事件都是被动的


我还尝试使用react执行相同的操作,但在这方面找不到足够的资源?

我正在考虑一种依赖于混合的解决方案,但我在将DB中viewmodel属性中的字符串转换为代码时遇到了一个问题。解决方案是在
onCreated
中从数据库中检索所需的模板,然后动态地将新的mixin添加到
ViewModel.mixin
中,并将此mixin推送到ViewModel
mixins
属性中。它看起来像这样:``template.home.ViewModel({mixin:['dynamicTemplate'],onCreated(){Meteor.subscribe('templates',()=>{const dbTemplate=blazeTemplates.findOne({});ViewModel.mixin({dynamicTemplate:dbTemplate.ViewModel});});console.log(this);},myRenderTemplateHelper(){},})“``总而言之,您应该研究如何使用viewmodel而不是以Blaze为中心的方式实现这一点,虽然有点晚了,但您可以看看如何使用标准模板实现这一点:
Hello Your Name!