Событие «загружено» маршрута железного маршрутизатора

Я немного новичок в железном маршрутизаторе, но мне любопытно, есть ли обработчик событий, который я могу определить после загрузки маршрута. Если я попытаюсь вызвать Router.current().data() в Meteor.startup, я получу 'undefined' для Router.current(). Я хотел бы знать «правильный» способ начать что-то делать после загрузки данных на этом маршруте...


person Ben    schedule 10.07.2014    source источник


Ответы (1)


Код, который вы используете, в порядке - Router.current().data().

Проблема в том, что здесь есть состояние гонки. Здесь происходят две вещи: Meteor.startup может запускаться до или после того, как маршрутизатор решит, на каком маршруте он находится. Если он запускается до загрузки маршрута, Router.current() будет null.

Возможно, вы захотите вместо этого поместить свой код в onAfterAction вашего маршрута. Таким образом, он также будет работать на правильной странице. Router.current().data() вернет неправильные данные по другому маршруту.

Еще одна вещь, о которой следует помнить, это то, что с Meteor вы сначала загружаете html, js и css и загружаете их. Затем данные приходят позже, поэтому, когда вы ищете данные при загрузке страницы, вам нужно сначала дождаться их, иначе у вас ничего не будет.

Iron Router также имеет хук под названием onData, который реактивно перезапускается при изменении data() соответствующего маршрута. Вы можете использовать это, чтобы убедиться, что у вас есть данные, и запустить их после того, как все загрузится должным образом.

person Tarang    schedule 10.07.2014