等待渲染Meteor模板助手,直到变量可用

时间:2015-05-19 14:53:15

标签: javascript meteor

我正在Meteor中创建基于位置的聊天应用。现在我想只渲染用户区域中的聊天消息。 TheRegion.region变量填充了HTML5地理定位请求。

Template.locationchat.helpers({
  messages: function () {
    return Messages.find({location: TheRegion.region});
  }
});

此代码的问题是调用此帮助程序时TheRegion.region变量仍为null。有没有办法在地理定位函数的回调中运行帮助器?或者当变量具有值?

时运行模板助手

2 个答案:

答案 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);

现在,区域在到达帮助者时总是存在。当值发生变化时,您的助手将重新运行。