1

我正在提供没有用户帐户的服务,并且我想限制我正在访问的页面。

所以每一页都是一个“盒子”,在每个“盒子”上我都有一堆“文件”。

我已经在 server/publications.coffee 中发布了相关信息

Meteor.publish 'files', (boxId)->
  console.log boxId
  return Files.find({boxId:boxId})

我的“盒子”文件有一个订阅句柄:

@filesHandle = Meteor.subscribe 'files', Session.get('currentBoxId')

currentBoxId 存储在会话变量中。

这是疯狂的部分:我希望它能够工作,并且它在我第一次启动服务器时会起作用。第一段代码中的 console.log 打印出正确的 ID。然后,突然控制台日志突然开始返回“null”,即使我在浏览器控制台中 console.log 会话变量,它也正确返回。

我觉得这里存在某种加载异步问题,但我不知道发生了什么。

有什么线索吗?

4

1 回答 1

0

啊,想通了。显然,可以在设置会话变量之前呈现模板。通常,您将集合句柄放在应用程序范围内的 main.js 文件中,但如果订阅依赖于会话变量,这将不起作用。

我做了以下事情:

Template.boxPage.created = ()->
  @filesHandle = Meteor.subscribe 'files', Session.get('currentBoxId')
于 2013-10-06T05:02:29.213 回答