我有一些出版物,我想在页面加载时订阅,我想要的第一条路线是等待这些潜艇准备就绪。我不希望waitOn
为将来的路线运行(正如全局waitOn
所做的那样),因为我使用了SubsManager,并且潜艇对未来的路线保持活动状态。
供参考,以下是我目前正在做的事情:
Router.configure
waitOn: ->
sub_list = []
for name in SUB_NAMES
sub = home_subs.subscribe name
sub_list.push sub
sub_list
它的好处是没有在路线之间拆除潜艇,但功能仍在运行。
答案 0 :(得分:1)
看来你正在做的事情很好。当再次调用waitOn
时,SubsManager将知道不重新订阅。每次路由更改时都会(并且应该)调用waitOn
,以便当前路由依赖于准备好的订阅。如果你想避免重新创建sub_list
,你可以懒洋洋地创建它并像这样存储它。
subscriptions = null
Router.configure
waitOn: ->
unless subscriptions?
subscriptions = for name in SUB_NAMES
home_subs.subscribe name
subscriptions
答案 1 :(得分:0)
这是一个解决方案。它不使用waitOn
,也没有loadingTemplate
:
Router.configure autoStart: false
Tracker.autorun (c) ->
if sub.ready()
# don't know why defer is necessary
_.defer ->
Router.start()
c.stop()