ReactiveVar 未在 Meteor 中的 Tracker.autorun 上获得新值

ReactiveVar not getting new value on Tracker.autorun in Meteor

我正在实例化一个新的 ReactiveVar:

Template.myTemplate.onCreated(function() {
   this.var1 = new ReactiveVar(0);
}

当用户选择新的年份值时,我正在 Tracker.autorun 强制重新运行:

Template.myTemplate.onRendered(function() {
  Tracker.autorun(function() {
  var year = Session.get('chartYear').toString(); // This session is from another template
  // Do stuff 
  ...
  Template.instance().var1.set(new data);
  }
}

我的帮手重新运行函数:

Template.myTemplate.helpers({
  function1: function () {
    return Template.instance().var1.get();
}

不确定发生了什么,但是当第一次选择年份值时,一切运行正常。但是当用户选择一个新的年份值时,会出现 TypeError 结果:

"TypeError: null is not an object (evaluating 'Template.instance().var1')"

但是,如果我将 ReactiveVars 替换为 Sessions,则当用户选择不同的年份值时一切正常。有人能帮忙吗?

不清楚是哪一行抛出该错误(如果以下内容不适用 post 完整错误表明这是来自帮助程序还是 onRendered 事件等)。

不过我怀疑这是来自 Template.onRendered event, which requires you to access the template instance from the this object, like you are in your Template.onCreated 事件。

所以尝试将 onRendered 函数更改为:

Template.myTemplate.onRendered(function() {
  templateInstance = this;
  Tracker.autorun(function() {
    var year = Session.get('chartYear').toString(); // This session is from another template
    // Do stuff 
    ...
    templateInstance.var1.set(newData);
  }
}