我想给我的用户创建的文档模板(合同,电子邮件等)的可能性流星如何保存模板蒙戈
我想通了,将存储在蒙戈这些文档模板的最佳选择(也许我错了......)
我一直在寻找几个小时,但我无法弄清楚如何呈现这些文档模板与他们的数据上下文。
例子:
Template stored in Mongo: "Dear {{firstname}}"
data context: {firstname: "Tom"}
汤姆的网站上,他应改为: “亲爱的汤姆”
我怎样才能做到这一点?
编辑
一些研究之后,我发现了一个叫spacebars,编译器套件带来编译到客户端的选项:
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"))
但它不起作用。
该模板得到编译,但然后,我不知道如何解释它的数据上下文并将其发送回网页。
EDIT 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渲染模板,但没有数据上下文...
不太可能;请参阅http://stackoverflow.com/a/24743280/586086。当Meteor开始时,模板正在服务器上编译,您必须将编译版本发送给所有连接的客户端。好主意,如果流星发布模板,以便客户可以制作新模板并共享它们。 –
显然可以编译客户端(请参阅上面的我的编辑),但然后我卡住了。我如何渲染它? – ndemoreau
为什么不使用'Template [templateName]'而不是更复杂的'eval(“Template。#{templateName}”)'?你在做什么应该可以,但是确保你只定义一次模板。 –