[英]Meteor helper functions versus variables?
我试图显示我网站上所有在线用户的数量,并安装了meteor-user-status插件来解决此问题。 我以为我要做的就是添加模板助手
Template.header.helpers({
numOnline: Meteor.users.find({"status.online":true}).count()
});
像这样,并在我的标题模板中包含{{numOnline}}变量。 但是,由于某种原因,这导致始终在线显示0个用户。 但是,当我在javascript控制台中简单运行方法Meteor.users.find({“ status.online”:true})。count()时,它为在线用户提供了正确的数量。
在弄乱了一点之后,我通过将其包装在一个函数中来使其工作:
Template.header.helpers({
numOnline: function(){
return Meteor.users.find({"status.online":true}).count();
}
});
此更改使其工作完美,但我不知道为什么。 有人可以解释为什么需要将其包装在函数中吗?
添加Christian Fritz,我认为可能会发生的唯一原因是在第一种情况下numOnline: Meteor.users.find({"status.online":true}).count()
集合在评估时尚未准备好模板,并分配0
或空数组[]
因为这是订阅返回的内容,在第二种情况下,是,当集合中发生更改时,函数将做出反应,因此这就是为什么该值很快就会被集合填充与订阅和功能将执行最新的价值。仅我的两分钱。 如果我错了,请纠正我。
好吧,这就是事实(文档也告诉您)。 之所以需要将其作为函数,是因为它具有反应性:为了在以后的某个时间点(当反应性数据源更改值时)重新评估代码段,您需要具有一个函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.