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

Meteor helper doesn't refresh on Reactive var .set()

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

数据处理或使用有什么问题吗?如何让帮手变得可行?

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

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

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