我想将我创建的对象存储Template.myTemplate.rendered = function ( ) { ... }
在Template.myChildTemplate.helpers(helpers)
. 到目前为止,我正在使用全局对象,但这感觉很hacky。有没有一种很好的以模板为中心的方式来做到这一点?
问问题
320 次
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
不幸的是,还没有这样的方法。
常见的模式是使用响应式字典作为文件范围的变量,或者如果您需要在多个文件中访问,则在与模板相关的命名空间中使用。此解决方案的缺点是此类变量在同一模板的所有实例之间共享,因此如果您在多个位置呈现此模板,则必须解决此问题。
var data = new ReactiveDict();
Template.myTemplate.rendered = function() {
data.set('key', 'value');
};
于 2014-07-07T07:22:59.053 回答