如何使用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);
解决方法:
当前无法直接编译Handlebars字符串. Meteor包装了Handlebars,仅提供了一个ast(抽象语法树)的编译方法,而不是直接提供字符串.但是,您可以提供自己的函数,该函数不是Handlebars函数.它不是公共API,但是您可以通过这种方式创建Meteor模板(除非API发生更改,否则现在是这样):
< 0.6.5:
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