Meteor 路由器和 url 参数

Meteor router and url paramaters

我在尝试将 URL 参数与 iron:router 一起使用时遇到了一些问题。

在我的应用程序的主页上,我显示了一个帖子线程。但我想允许人们通过在 url 中指定其 ID 来 select 单个线程。就像那样,当有人点击 link 到特定线程时,如 myapp/the_asked_id,他只会看到与该线程相关的数据。否则,他会看到所有线程。

我认为我可以从 url 中获取数据,例如在 PHP 中,然后检查此参数的值/是否存在:如果它存在/具有正确的值,我显示线程,否则我显示所有。

这是我到目前为止尝试过的方法:

HTML link :

<a href="#" class="dropdown-toggle green-link" data-toggle="dropdown" title="Notifications" data-target="{{link}}">the link</a>

使用 {{link}} 作为我的 collection 的 _id 来标识要显示的所需线程/文档。

Js link 事件:

'click .talkLink' : function(event, template){
      if($(event.target).hasClass('talkLink'))
      {
        console.log(event.target.dataset.target);
        console.log(event.currentTarget);
      }
      else {
        console.log(event.currentTarget);
      }
      Router.go('/', {_id: event.target.dataset.target});
    },

路由器:

this.route('home', {
      path: '/:_id?',
      data: {
        threadId: (this.params._id || "")
      }
    });

但我无法让它工作,因为它目前总是显示未找到的模板...

有人可以向我解释哪里出了问题以及我应该如何处理吗?

谢谢,

大卫

几点建议:

this.route('home', {
    path: '/:_id',
    data: function() {
        // assuming you have a collection called "Threads"
        return Threads.findOne(this.params._id);
    }
});
  1. 您需要一个名为 'home' 的模板。它的数据上下文将是 data 回调
  2. 的 return
  3. 您不需要在路径中放置 ?
  4. data是一个回调,你可以在其中访问this.params找到正确的文档。