-1

我在autorun. 相同的反应变量用于helper. 但是helper值不会按autorun功能刷新。我下面的代码会清楚地解释你。

Template.home.onCreated(function () {
  var self = this;
  self.ITEMS_INCREMENT = 2;

  self.itemsLimit = new ReactiveVar(2);


});

Template.home.onRendered(function () {
  var self = this;
  this.autorun(function(){
    if( true ){
      self.itemsLimit.set(self.itemsLimit.get()+self.ITEMS_INCREMENT);
      console.log(self.itemsLimit.get()); // set values are fine
    }
  });

});

Template.home.helpers({
testHelper: function(){
  console.log(Template.instance().itemsLimit.get()); // console returns 2 and 4 only. no more update :(
  return true;
}
});

在处理数据或使用方面有什么问题吗?如何使助手可行?

4

1 回答 1

1

好吧好吧,我不知道你要在哪里改变反应变量的值。当第一次计算在您的跟踪器中运行时,它只会更改。所以只有你看到更新的人。使用的想法ReactiveVar是,当您更改它时,它会在助手内部或自动运行内部更改。

简而言之,您可以做些什么来测试它:

Template.home.onRendered(function () {
  var self = this;
  Meteor.setInterval(function(){
      self.itemsLimit.set(self.itemsLimit.get()+self.ITEMS_INCREMENT);
    }, 500);
});
于 2015-10-10T07:50:38.390 回答