У нас есть макет, который нуждается в текущих данных, определенный в нашем контроллере, как это:IronRouter получить данные в макете
TripController = RouteController.extend({
layoutTemplate: 'tripLayout',
data: function() {
return Trips.findOne({_id: this.params._id});
}
});
Наша проблема кажется данных расы:
Большую часть времени Template.currentData()
имеет значение null, но иногда (в основном при отладке) это наш data
, который мы определили. Проблема возникает только при перезагрузке страницы, когда мы находимся в tripLayout, но не тогда, когда мы вводим раскладку поездки с другой страницы.
Обратите внимание, что мы загрузили `TripController, так как параметры контроллера правильно установлены.
Template.tripLayout.onRendered(function() { // note, this is the layout template
Iron.controller.params._id // correct id
Template.currentData() // null
});
То, что мы пытаемся достичь раскол раскладка, где правая сторона всегда одинакова, а левая сторона заполнена выходом (см скриншот)
UPDATE (это обновление НЕПРАВИЛЬНО)
Я думаю, я нашел ошибку:
waitOn: function() {
return [Meteor.subscribe('public-trips'),
Meteor.subscribe('my-trips')];
}
Как только я удаляю массив (так что только одна подписка),
data: function() {
return Trips.find({}).fetch();
}
больше не возвращает 0. Я посмотрю на это немного больше.
UPDATE2
Так что мое первоначальное предположение было неверным, подписавшись только один не помогает. Это действительно просто состояние гонки.
Update3
мне удалось его воспроизвести: meteorpad
В предупреждениях, он показывает количество игроков, он имеет. Первый раз это 0, а затем 6. Но 0 не должно появляться, так как мы «ждем» его?
У вас есть 'waitOn', определенные в вашем маршруте, который ждет для' подписки Trips' быть загружены? –
Да, мы делаем это так: 'waitOn: function() {return [Meteor.subscribe ('trip')]}' –
И у вас есть шаблон 'load', который я предполагаю? –