2013-09-06 7 views
12

Jak przekazać dane między dwoma różnymi trasami i szablonami?Meteor Iron Router: przekazywanie danych między trasami

Mam plik javascript na przednim końcu (folder klienta), który po prostu wywołuje Router.go() przekazując w post ID jako jeden z moich parametrów.

Poniżej wymieniono trzech głównych winowajców (jak sądzę). Usunąłem większość kodu, aby ułatwić czytanie. Mogę bez problemu zmieniać stronę PostDetail. Mogę także pobrać z routera stronę ze strony . Mój problem polega na tym, że wpis do bazy danych (POLL), który jest pobierany, nie jest renderowany w szablonie. Stąd {{Pytanie}} jest zawsze puste, mimo że zwracany jest wpis do bazy danych.

Daj mi znać, jeśli chcę opublikować więcej informacji.

FrontEnd.js

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

po 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'} 
     } 
    }); 

}); 

----- Aktualizacja -----

Chyba zawężony problemu po prostu będąc w stanie uczynić tylko jeden wpis w bazie danych, zamiast listy z nich za pomocą {{#each SomeList}} składnia.

Odpowiedz

2

Wygląda na to, że znalazł odpowiedź/rozwiązany, ale tylko w przypadku, myślę, że w swoim oświadczeniu findOne:

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

powinien brzmieć:

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

(zakładając, że ankietę ma swój stanowisk wymienionych przez _id.

nadzieję, że pomoże.

0

Czy możesz przekazać informacje w sesji? dokumenty do tego są tutaj http://docs.meteor.com/#session. Właśnie to planuję.

+0

myślę sesja jest dobrym sposobem w ge do przekazania danych, ale w tym przypadku jest to raczej problem z składnią. –

+0

Sesja nie jest utrzymywana między trasami. – Joseph

+3

Sesje są obiektami trwałymi na całym świecie! –