【问题标题】:ReactiveVar not getting new value on Tracker.autorun in MeteorReactiveVar 没有在 Meteor 的 Tracker.autorun 上获得新的价值
【发布时间】:2016-12-06 06:13:06
【问题描述】:

我正在实例化一个新的 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,则当用户选择不同的年份值时,一切正常。有人可以帮忙吗?

【问题讨论】:

    标签: meteor meteor-tracker


    【解决方案1】:

    不清楚是哪一行引发了该错误(如果以下内容不适用,则发布完整的错误,指示这是来自帮助程序还是 onRendered 事件等)。

    但是我怀疑这是来自Template.onRendered 事件,它要求您从this 对象访问模板实例,就像您在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);
      }
    }
    

    【讨论】:

    • 错误来自 onRendered()。 “来自 Tracker 重新计算函数的异常。TypeError: null is not a object (evalating 'Template.instance().var1'”我使用 var1 作为这篇文章的示例。
    • 所以上述情况适用 - 将 Template.instance() 更改为 this
    • 将 onRendered() 中的 'Template.instance()' 更改为 'this' 会导致以下错误:“来自 Tracker afterFlush 函数的异常:”和“TypeError: undefined is not an object (evalating 'this .var1.set')"。此外,在第一次渲染页面时,根本没有数据。
    • 啊,this 将在您的 Tracker.autorun 函数中发生变化。我将添加到上面的答案中
    • 啊哈。你是个明星。那么为什么 'Template.instance()' 不起作用呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2021-03-28
    • 2016-01-30
    相关资源
    最近更新 更多