0

新しい 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 に置き換えると、ユーザーが異なる年の値を選択したときにすべてが正常に機能します。誰か助けてくれませんか?

4

1 に答える 1

1

どの行がそのエラーをスローしているかは明確ではありません (以下が当てはまらない場合は、これがヘルパーまたは onRendered イベントからのものかどうかを示す完全なエラーを投稿してください)。

ただし、これはイベントからのものであると思われます。これには、イベントにいるように、オブジェクトTemplate.onRenderedからテンプレート インスタンスにアクセスする必要があります。thisTemplate.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);
  }
}
于 2016-12-05T21:22:25.573 に答える