Почему железо-маршрутизатор игнорирует 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'

2 ответа

У вас нет loadingTemplate. Iron Router не может использовать шаблон загрузки, если у вас его нет, поэтому эффект ожидания waitOn игнорируется.

Просто добавьте loadTemplate, и он должен работать.

onAfterAction запускается раз и навсегда. Первый, когда его ожидание, в другое время, когда есть реактивное изменение или данные, готово. Если вы хотите что-то, что этого не делает, вместо этого используйте onRun.


Вы сообщаете маршрутизатору, что для подписки на коллекцию. Сбор и подписка являются реактивными источниками данных. Поэтому, когда эта коллекция изменяется, waitOn заполняет огонь и обновляет маршрут, включая onAfterAction.

licensed under cc by-sa 3.0 with attribution.