我想让我的用户能够创建文档模板(合同、电子邮件等)
我想出的最佳选择是将这些文档模板存储在 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))
除了名称未注入模板这一事实外,此方法有效。UI.renderWithData 呈现模板但没有数据上下文......