sam*_*cos 1 templates meteor meteor-blaze
我正在使用Meteor 1.0.
我有一个Template.*name*.rendered功能,可以进行大量的计算.在计算结束时,我希望输出进入一个Template.*name*.helpers所以我可以在相应的html页面中使用它.
这是代码的简化版本:
Template.myTemplate.rendered = function () {
var x = Math.random();
Template.otherTemplate.helpers({
randomNum: x
});
}
Run Code Online (Sandbox Code Playgroud)
当我打电话{{randomNum}}时otherTemplate,没有任何反应.
我也试过把Template.*name*.helpers外面的Template.*name*.rendered,在这种情况下,我得到错误:
Uncaught ReferenceError: x is not defined
Run Code Online (Sandbox Code Playgroud)
思考?
这不是真正正确的事情,因为Meteor的工作方式是在应用程序启动之前编译模板,而不是在运行时.虽然这些行中的某些内容可能是可行的(例如,通过使用Template.registerHelper),但是将响应变量设置为rendered回调中的特定值并将帮助器设置为返回该变量会更好:
Session.setDefault('randomNum', 0);
Template.myTemplate.rendered = function () {
Session.set('randomNum', Math.random());
}
Template.otherTemplate.helpers({
randomNum: Session.get('randomNum')
});
Run Code Online (Sandbox Code Playgroud)
如果您更愿意使用私有变量randomNum,请查看ReactiveVar.它可以是任何反应数据源,它可以工作.