javascript - 正在加载并等待 "global" meteor 订阅

标签 javascript meteor coffeescript

这是我的场景:

我有一个布局模板,需要检查用户是否属于至少一个团队。如果没有,则在整个站点上显示一个 div。用户只能看到他们所属的团队,因此我创建了一个简单的可用出版物:(代码示例是 CoffeeScript)

Meteor.publish 'teams', ->
  return null if !@userId
  Teams.find {'members._id': @userId}

这非常有效,控制台中的 Teams.find().fetch() 给出了预期的结果。

但是,如果我将此代码放入 Template.layout.rendered 中,则它不起作用。

Template.layout.rendered = ->
  teams = Teams.find().fetch()
  hasTeams = teams.length > 0
  if !hasTeams
    ...do stuff..

显然这不起作用,因为团队查找是异步的,并且在需要做出决定时不会加载。对于普通模板/页面,我只需使用 IronRouter waitOn(),但是我在布局上做什么?

我可以在我的路由器中执行 waitOn,但由于数据是“全局”的并且将在任何地方使用,并且因为用户可以在任何地方深层链接到站点,所以我不想添加该数据等待每一条路线。

那么正确的模式是什么?如何让 meteor 客户端加载全局数据并在运行路线之前等待数据?

最佳答案

更多的思考和搜索在这里找到了答案:struggling to wait on subscriptions and multiple subscriptions

我将 Router.configure 更改为:

Router.configure
  layoutTemplate: 'layout'
    waitOn: ->
     return [
       Meteor.subscribe('teams')
     ]

可以将多个订阅添加到返回数组中,我相信它会等待所有订阅。

关于javascript - 正在加载并等待 "global" meteor 订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27283552/

相关文章:

javascript - 使用 Ajax 从 UIWebView 调用 Objective C 函数

javascript - 如何更改 meteor 中的重置密码 URL?

javascript - 在浏览器中将 Sass 翻译成 Css

jquery - Rails - 为什么远程提交表单后 jQuery 不加载

php - 需要在 Web 开发抽象的所有层中访问相同的 bool 结果

javascript - 如何清除除第一个索引之外的数组?

javascript - 清除页面部分

javascript - 我应该使用什么 Meteor 事件处理程序来提交 onchange 表单

javascript - meteor 铁路由器 header 类型不是 json

javascript - Rails 4 x simple_calendar gem : create new record on click in calendar cell