Почему железо-маршрутизатор игнорирует waitOn?
onAfterAction
запускается дважды, один раз перед 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'
У вас нет loadingTemplate
. Iron Router не может использовать шаблон загрузки, если у вас его нет, поэтому эффект ожидания waitOn
игнорируется.
Просто добавьте loadTemplate, и он должен работать.
onAfterAction
запускается раз и навсегда. Первый, когда его ожидание, в другое время, когда есть реактивное изменение или данные, готово. Если вы хотите что-то, что этого не делает, вместо этого используйте onRun
.
Вы сообщаете маршрутизатору, что для подписки на коллекцию. Сбор и подписка являются реактивными источниками данных. Поэтому, когда эта коллекция изменяется, waitOn заполняет огонь и обновляет маршрут, включая onAfterAction.