gpt4 book ai didi

Meteor如何在mongo中保存模板

转载 作者:行者123 更新时间:2023-12-04 18:06:46 25 4
gpt4 key购买 nike

我想让我的用户能够创建文档模板(契约(Contract)、电子邮件等)

我想到的最佳选择是将这些文档模板存储在 mongo 中(也许我错了......)

我已经搜索了几个小时,但我不知道如何使用它们的数据上下文来呈现这些文档模板。

示例:

Template stored in Mongo: "Dear {{firstname}}"
data context: {firstname: "Tom"}

在汤姆的网站上,他应该写着:“亲爱的汤姆”

我该怎么做?

编辑

经过一些研究,我发现了一个名为 spacebars-compiler 的包,它为客户端提供了编译选项:

meteor add spacebars-compiler

然后我尝试了这样的事情:

Template.doctypesList.rendered = ->
content = "<div>" + this.data.content + "</div>"
template = Spacebars.compile content
rendered = UI.dynamic(template,{name:"nicolas"})
UI.insert(rendered, $(this).closest(".widget-body"))

但它不起作用。

模板已编译,但我不知道如何用它的数据上下文解释它并将它发送回网页。

编辑 2

多亏了汤姆,我离我越来越近了。

这是我做的:

Template.doctypesList.rendered = ->
content = this.data.content
console.log content
templateName = "template_#{this.data._id}"
Template.__define__(templateName, () -> content)
rendered = UI.renderWithData(eval("Template.#{templateName}"),{name:"nicolas"})
UI.insert(rendered, $("#content_" + this.data._id).get(0))

除了名称没有注入(inject)到模板中之外,这是有效的。 UI.renderWithData 呈现模板但没有数据上下文...

最佳答案

你缺少的是对(未记录!)Template.__define__ 的调用,它需要模板名称(选择一些独特且巧妙的东西)作为第一个参数和你从中获得的渲染函数你的空格键编译器。完成后,您可以按照@Slava 的建议使用{{> UI.dynamic}}

还有另一种方法,通过使用 UI.Component API,但我想目前它还很不稳定,所以也许我会跳过这个,至少现在是这样。

关于Meteor如何在mongo中保存模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24807739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com