Подтвердить что ты не робот

Meteor Iron Router: передача данных между маршрутами

Как передать данные между двумя разными маршрутами и шаблонами?

У меня есть файл javascript на передней панели (папке клиента), который просто вызывает Router.go(), передавая идентификатор сообщения в качестве одного из моих параметров.

Ниже приведены три основных виновника (я считаю). Я удалил большую часть кода, чтобы было легче читать. Я могу перейти на страницу PostDetail без проблем. Я также могу получить PostId на странице PostDetail с маршрутизатора. Моя проблема заключается в том, что запись базы данных (POLL), которая извлекается, не отображается в шаблоне. Следовательно, {{Вопрос}} всегда пуст, даже если возвращается запись базы данных.

Сообщите мне, если я напишу дополнительную информацию.

FrontEnd.js

Template.PostTiles.events({
  // When a choice is selected
  'click .pin' : function(event, template) {        
    Router.go('Post', {_PostId: this.PostId});    
  }
});

пост-detail.html

<template name="PostDetail">
    <h3>{{Question}}</p>
</template>

Shared.js

Router.map( function() {

    this.route('Home', {
        path: '/',
        template: 'PostTiles',
        data: {
            // Here we can return DB data instead of attaching 
            // a helper method to the Template object
            QuestionsList: function() {
                return POLL.find().fetch();
            }           
        }
    });

    this.route('Post', {
        template: 'PostDetail',
        path: '/Post/:_PostId',
        data: function() {          
            return POLL.findOne(this.params._PostId); 
        },
        renderTemplates: {
            'disqus': {to: 'comments'}
        }
    });

});

----- Обновить -----

Я думаю, что я сузил эту проблему, просто имея возможность отображать только одну запись в базе данных, а не список из них, используя синтаксис {{# each SomeList}}.

4b9b3361

Ответ 1

Похоже, вы нашли ответ/разрешили это, но на всякий случай, я думаю, что это в вашем выражении findOne:

data: function() {          
        return POLL.findOne(this.params._PostId); 
    },

следует читать:

data: function() {          
        return POLL.findOne({_id:this.params._PostId}); 
    },

(при условии, что у POLL есть ваши сообщения, перечисленные _id.

Надеюсь, что это поможет.

Ответ 2

Не могли бы вы передать информацию на сессии? документы для этого здесь http://docs.meteor.com/#session. Это то, что я планирую делать.