我想存储我在Template.myTemplate.rendered = function ( ) { ... }
期间创建的对象,并在Template.myChildTemplate.helpers(helpers)
中使用该对象。到目前为止,我正在使用一个全局对象,但这感觉非常hacky。这是一种以模板为中心的好方法吗?
答案 0 :(得分:2)
您可以使用UI._templateInstance();
和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();
,open bug此刻。
答案 1 :(得分:1)
不幸的是,还没有 这样的方法。
常见的模式是将反应式字典用作文件范围的变量,或者如果需要在多个文件中进行访问,则使用与模板相关的命名空间。这个解决方案的缺点是这个变量在同一个模板的所有实例之间共享,所以如果你在多个地方渲染这个模板,你必须解决这个问题。
var data = new ReactiveDict();
Template.myTemplate.rendered = function() {
data.set('key', 'value');
};