3

中に作成したオブジェクトを保存し、そのオブジェクトを .NETTemplate.myTemplate.rendered = function ( ) { ... }で使用したいと考えていますTemplate.myChildTemplate.helpers(helpers)。これまでのところ、私はグローバル オブジェクトを使用することに頼っていますが、それは非常にハッキリしています。これを行うための素敵なテンプレート中心の方法はありますか?

4

2 に答える 2

2

UI._templateInstance();andを使用できますReactiveDict(データを反応的にするためにも)(で追加meteor add reactive-dict

Template.myTemplate.created = function() {
    this.templatedata = new ReactiveDict();

}
Template.myTemplate.rendered = function() {
    this.templatedata.set("myname", "value";
};

Template.myTemplate.helpers({
    myvalue: function() {
        var tmpl = UI._templateInstance();
        return tmpl.templatedata.get('myname');
    }
});

これにより、このテンプレートをページで複数回使用できますが、グローバル変数や非インスタンス変数では許可されない、各テンプレートへの変数スコープを引き続き持つことができます。

警告のメモ、現在の鉄のルーター (0.7.1) は壊れています。UI._templateInstance();これは現時点で未解決のバグです。

于 2014-07-07T08:45:27.193 に答える
1

残念ながら、そのような方法はまだありません。

一般的なパターンは、リアクティブ dict をファイル全体の変数として使用するか、複数のファイルへのアクセスが必要な場合はテンプレートに関連する名前空間で使用することです。このソリューションの欠点は、そのような変数が同じテンプレートのすべてのインスタンス間で共有されることです。そのため、このテンプレートを複数の場所でレンダリングする場合は、これを回避する必要があります。

var data = new ReactiveDict();

Template.myTemplate.rendered = function() {
  data.set('key', 'value');
};
于 2014-07-07T07:22:59.053 に答える