javascript - Meteor 路由器和 url 参数

标签 javascript meteor iron-router

我在尝试将 Meteor 中的 URL 参数与 Iron:router 一起使用时遇到一些问题。

在我的应用程序的主页上,我会显示帖子线程。但我希望允许人们通过在 url 中指定其 ID 来选择单个线程。这样,当有人单击指向特定线程(例如 myapp/the_asked_id)的链接时,他只能看到与该线程相关的数据。否则,他会看到所有线程。

我认为这将是我从 url 获取数据的地方,就像在 PHP 中一样,然后检查此参数的值/是否存在:如果它存在/具有正确的值,则显示线程,否则显示所有这些。

这是我迄今为止尝试过的:

HTML 链接:

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

将 {{link}} 作为我集合中的 _id,以标识要显示的所需线程/文档。

Js链接事件:

'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. 您不需要在路径中放置 ?
  3. data 是一个回调,您可以在其中访问 this.params 以查找正确的文档。

关于javascript - Meteor 路由器和 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30891810/

相关文章:

javascript - NodeJS : how to access TextRow?

angular - 模块 'LoginComponent' 导入了意外指令 'AppModule'。请添加@NgModule 注解

javascript - React-Router 疑问/问题

javascript - 拉斐尔,让对象不接收事件

javascript - 打印时保留内联 CSS

meteor - PM2 + meteor 环境设置

javascript - 如何在带 meteor 的 Handlebars 助手中使用多个参数?

javascript - 如何在模板中组织 Canvas 脚本

javascript - Meteor 个人资料页面检查当前用户是否是页面所有者

javascript - 谷歌地图 : Auto close open InfoWindows?