我正在Meteor中创建基于位置的聊天应用。现在我想只渲染用户区域中的聊天消息。 TheRegion.region
变量填充了HTML5地理定位请求。
Template.locationchat.helpers({
messages: function () {
return Messages.find({location: TheRegion.region});
}
});
此代码的问题是调用此帮助程序时TheRegion.region
变量仍为null
。有没有办法在地理定位函数的回调中运行帮助器?或者当变量具有值?
答案 0 :(得分:3)
我常常在Meteor中发现,如果你在等待一个变量,你需要的只是一个if子句来保护自己。
试试这个:
Template.locationchat.helpers({
messages: function () {
if(TheRegion.region)
return Messages.find({location: TheRegion.region});
}
});
感觉不自然,但通常都有效。试一试。
答案 1 :(得分:2)
那是因为你的变量没有被动反应。
在你的onCreated:
TheRegion = new ReactiveDict();
TheRegion.set('region',undefined);
现在,区域在到达帮助者时总是存在。当值发生变化时,您的助手将重新运行。