为什么 iron-router 会忽略 waitOn?

Why would iron-router ignore waitOn?

onAfterAction 是 运行 两次,一次在数据到达之前,一次之后。为什么在数据到达之前运行?此外,在这个基本版本中,rendered 在数据到达后调用,但在我的应用程序中,它在数据到达之前调用。知道为什么会这样吗?基本再现:

https://github.com/lorensr/waiton-bug

Items = new Meteor.Collection 'items'

Router.configure
  waitOn: ->
    Meteor.subscribe 'items'

if Meteor.isServer
  Meteor.publish 'items', ->
    Items.find {}

Router.route '/',
  name: 'hello'

您是在告诉路由器 collection 订阅的内容。 collection 和订阅都是响应式数据源。因此,当 collection 发生变化时,waitOn 填充会触发并更新包含 onAfterAction 的路由。

您没有定义 loadingTemplate。如果没有 Iron Router 就不能使用加载模板所以效果是 waitOn 的等待效果被忽略。

只需添加 loadingTemplate 即可。

onAfterAction一次又一次运行。第一次是在等待,其他时候是有反应性变化或数据准备就绪。如果您想要不这样做的东西,请改用 onRun