如何在流星运行时编译新模板?
Posted
技术标签:
【中文标题】如何在流星运行时编译新模板?【英文标题】:How to compile new templates at runtime in meteor? 【发布时间】:2012-11-13 02:22:40 【问题描述】:如何在运行时使用 Handlebars.js 在流星中编译新模板?
var source = '<input type="text" value"title" />' ;
var template = ***???***.compile(my_new_template, source);
var context = title: "My New Post", body: "This is my first post!"
Template.my_new_template.events(
'click': function (e,sender)
var that=this;
);
var html = Template.my_new_template(context);
$('#workspace').append(html);
【问题讨论】:
【参考方案1】:目前无法直接编译 Handlebars 字符串。 Meteor 包装了 Handlebars,只为 ast(抽象语法树)提供了编译方法,而不是直接提供字符串。但是,您可以提供自己的不是 Handlebars 函数的函数。它不是公共 API,但您可以通过这种方式创建 Meteor 模板(暂时,除非 API 更改):
var tmpl = Meteor._def_template("templateName", function ()
return "some html string";
);
0.6.5
var tmpl = Meteor.__define__("templateName", function ()
return "some html string";
);
因此,这将在 Template
命名空间中创建一个模板,并为您提供模板的所有良好 Meteor 功能(例如反应性、事件、地标等)。
您还可以通过观看 Spark(Meteor 的底层渲染引擎)上的这一系列截屏视频来了解幕后发生的事情。
http://www.eventedmind.com/posts/meteor-rendering-template-functions http://www.eventedmind.com/posts/meteor-introduction-to-rendering
【讨论】:
继 0.6.5 中的命名空间清理之后,此方法现在位于全局模板下,为Template.__define__
谢谢韦斯。从 0.6.5 开始,您是正确的。不过我不知道如何接受您的编辑,所以我自己做吧。以上是关于如何在流星运行时编译新模板?的主要内容,如果未能解决你的问题,请参考以下文章