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.
myślę sesja jest dobrym sposobem w ge do przekazania danych, ale w tym przypadku jest to raczej problem z składnią. –
Sesja nie jest utrzymywana między trasami. – Joseph
Sesje są obiektami trwałymi na całym świecie! –