3

Handlebars.jsを使用してmeteorで実行時に新しいテンプレートをコンパイルする方法は?

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);
4

1 に答える 1

4

現在、Handlebars 文字列を直接コンパイルする方法はありません。Meteor はハンドルバーをラップし、文字列ではなく 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 機能がすべて提供されます (例: 反応性、イベント、ランドマークなど)。

また、Meteor の基礎となるレンダリング エンジンである Spark でこの一連のスクリーンキャストを視聴することで、舞台裏で何が起こっているかについて詳しく知ることができます。

http://www.eventedmind.com/posts/meteor-rendering-template-functions http://www.eventedmind.com/posts/meteor-introduction-to-rendering

于 2013-02-27T23:53:23.963 に答える