Meteor.js - 在呈现的模板中调用模板助手

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)

思考?

ric*_*ilv 5

这不是真正正确的事情,因为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.它可以是任何反应数据源,它可以工作.