Meteor助手不会在Reactive var .set()上刷新

时间:2015-10-10 07:39:09

标签: meteor meteor-blaze meteor-helper meteor-react

我更新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;
}
});

处理数据或使用方面有什么问题吗?如何帮助他们是可行的?

1 个答案:

答案 0 :(得分:1)

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

简而言之,您可以做的是测试它:

Template.home.onRendered(function () {
  var self = this;
  Meteor.setInterval(function(){
      self.itemsLimit.set(self.itemsLimit.get()+self.ITEMS_INCREMENT);
    }, 500);
});