您如何仅在会话中的第一条路线上执行 waitOn?
How do you do a waitOn only on the first route in a session?
我有一些出版物想在页面加载时订阅一次,我希望第一个途径是等待这些订阅准备就绪。我不希望 waitOn
到 运行 用于未来的路线(就像全局 waitOn
那样),因为我正在使用 SubsManager,并且潜艇在未来的路线中保持活动状态。
作为参考,这是我目前正在做的事情:
Router.configure
waitOn: ->
sub_list = []
for name in SUB_NAMES
sub = home_subs.subscribe name
sub_list.push sub
sub_list
这样做的好处是 sub 不会在路由之间被拆除,但功能仍然 运行s。
看来你做的还不错。当再次调用 waitOn
时,SubsManager 将知道不重新订阅。 waitOn
将(并且应该)在每次路由更改时调用,以便当前路由依赖于准备就绪的订阅。如果你想避免重新创建sub_list
,你可以懒惰地创建它并像这样存储它。
subscriptions = null
Router.configure
waitOn: ->
unless subscriptions?
subscriptions = for name in SUB_NAMES
home_subs.subscribe name
subscriptions
这是一种解决方案。它不使用 waitOn
并且没有 loadingTemplate
:
Router.configure autoStart: false
Tracker.autorun (c) ->
if sub.ready()
# don't know why defer is necessary
_.defer ->
Router.start()
c.stop()
我有一些出版物想在页面加载时订阅一次,我希望第一个途径是等待这些订阅准备就绪。我不希望 waitOn
到 运行 用于未来的路线(就像全局 waitOn
那样),因为我正在使用 SubsManager,并且潜艇在未来的路线中保持活动状态。
作为参考,这是我目前正在做的事情:
Router.configure
waitOn: ->
sub_list = []
for name in SUB_NAMES
sub = home_subs.subscribe name
sub_list.push sub
sub_list
这样做的好处是 sub 不会在路由之间被拆除,但功能仍然 运行s。
看来你做的还不错。当再次调用 waitOn
时,SubsManager 将知道不重新订阅。 waitOn
将(并且应该)在每次路由更改时调用,以便当前路由依赖于准备就绪的订阅。如果你想避免重新创建sub_list
,你可以懒惰地创建它并像这样存储它。
subscriptions = null
Router.configure
waitOn: ->
unless subscriptions?
subscriptions = for name in SUB_NAMES
home_subs.subscribe name
subscriptions
这是一种解决方案。它不使用 waitOn
并且没有 loadingTemplate
:
Router.configure autoStart: false
Tracker.autorun (c) ->
if sub.ready()
# don't know why defer is necessary
_.defer ->
Router.start()
c.stop()