这是我的场景:加载和等待“全球”流星订阅
我有一个布局模板,需要检查用户是否属于至少一个团队。如果不是,则在整个站点上显示一个div。用户只能看到他们所属的球队,所以我创建了一个简单的出版物作品:(代码样本的CoffeeScript)
Meteor.publish 'teams', ->
return null if [email protected]
Teams.find {'members._id': @userId}
这个伟大的工程和Teams.find()获取()在控制台提供预期结果。
但是,如果我把这个代码放在Template.layout.rendered中,它不起作用。
Template.layout.rendered = ->
teams = Teams.find().fetch()
hasTeams = teams.length > 0
if !hasTeams
...do stuff..
显然这不起作用,因为团队发现是异步的,并且在需要做出决定时没有加载。使用普通的模板/页面,我只需使用IronRouter waitOn(),但是我在布局上做了什么?
我可以在我的路由器上做一个waitOn,但由于数据是“全局的”并将在任何地方使用,并且由于用户可以深入链接到站点到处,我不想添加waitOn到每一个单一的路线。
那么什么是正确的模式?在运行路由之前,如何让流星客户端加载全局数据并等待数据?