我更新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;
}
});
处理数据或使用方面有什么问题吗?如何帮助他们是可行的?
答案 0 :(得分:1)
好吧,我不知道你要在哪里改变反应变量的值。当您的跟踪器中首次运行计算时,它只会被更改。所以只有你看到更新。使用ReactiveVar
的想法是,当你更改它时,它会在帮助器内或自动运行内部被更改。
简而言之,您可以做的是测试它:
Template.home.onRendered(function () {
var self = this;
Meteor.setInterval(function(){
self.itemsLimit.set(self.itemsLimit.get()+self.ITEMS_INCREMENT);
}, 500);
});