2013-09-06 5 views
12

Как передавать данные между двумя разными маршрутами и шаблонами?Meteor Iron Router: Передача данных между маршрутами

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

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

Дайте мне знать, если я напишу дополнительную информацию.

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}}.

ответ

2

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

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

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

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

(при условии, что опрос Ваш Должности, указанные в _id.

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

0

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

+0

Я думаю, что сессия - хороший способ neral для передачи данных, но в этом случае это скорее проблема синтаксиса. –

+0

Сессия не сохраняется между маршрутами. – Joseph

+3

Сессии - глобально постоянные объекты! –

 Смежные вопросы

  • Нет связанных вопросов^_^