流星助手不会在 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);
});
我在 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);
});