12

如何在两个不同的路由和模板之间传递数据?

我在前端(客户端文件夹)上有一个 javascript 文件,它只是调用 Router.go() 并将帖子 ID 作为我的参数之一传递。

以下是三个主要罪魁祸首(我相信)。我已经删除了大部分代码以使其更易于阅读。我可以毫无问题地切换到PostDetail页面。我还可以从路由器的PostDetail页面上检索PostId 。我的问题是,检索到的数据库条目(POLL)没有在模板上呈现。因此,即使正在返回数据库条目,{{Question}}也始终为空。

让我知道我是否应该发布更多信息。

前端.js

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

post-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}}语法的列表。

4

2 回答 2

2

看起来你找到了答案/解决了这个问题,但以防万一,我认为它在你的findOne陈述中:

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

应该读:

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

(假设 POLL 的帖子由 _id 列出。

希望有帮助。

于 2013-09-20T18:54:16.200 回答
0

你能在 Session 中传递信息吗?文档在这里http://docs.meteor.com/#session。这就是我打算做的事情。

于 2013-09-11T16:53:00.073 回答