1

この質問/回答のフォローアップ (2 番目の回答) Meteor.js でテンプレートを動的にロードする

現在表示されているテンプレートにヘルパーを設定し、テンプレートを動的に返しています。これはうまくいきます。

Template.template1.helpers({

    dynamicView: function(){
        return Template['dynamic_template']();
    }
})

これにより、テンプレート 1 に私の html が表示されます。

質問:

  1. このテンプレートの作成時にデータを渡すにはどうすればよいですか?次のようなことはできますか?

    Template['dynamic_template'](data1, jsonData2);

  2. dynamicView他の基準に基づいて異なるテンプレートを持つことができるという意味で、template1のヘルパーも動的にする必要があります。ここでセッションを使用して、dynamicView の return ステートメントを次のように変更できますか。

    dynamicView: function(){ return Session.get('dynamicTemplate'); }

Session.set('dynamicTemplate', Template['dynamic_template']());これは機能しますが、推奨されます。それは単なる文字列ですが、パフォーマンスの問題と、反応的に渡されるテンプレートのサイズが心配です

4

1 に答える 1

3

OK、答えを分割する必要があると思います:

1で。

テンプレートはコンパイルされたハンドルバー テンプレートであるため、それらにコンテキストを提供するだけで、ハンドルバー データを埋めることができます。

data = {name1:value1, name2:value2}
return Template['dynamic_template'](data);

そのため、{{name1}}とでそれぞれ{{name2}}満たされます。value1value2

2で。

はい、動作するはずです。結果として HTML を生成するデータを渡すことができます。非常に詳細なビデオキャストについては、テンプレート関数に関する EventedMind スクリーンキャストをご覧ください: http://www.eventedmind.com/posts/meteor-rendering-template-functions

テンプレート システムの使用例は、これとまったく同じではない可能性があります。代わりにMeteor.renderを使用することもできますが、それは何をしたいかによって異なります。

名前にもかかわらずSession、それは単なるリアクティブな JavaScript 変数であるため、通常の JavaScript 変数で使用されるものと同じように、より大きな文字列でも問題ないはずです。

于 2013-04-23T01:06:44.573 に答える