Meteor.js Iron Routing:_id动态路由混乱

时间:2015-08-14 03:31:09

标签: meteor routing iron-router

我目前正在努力工作,#34;你的第二个流星应用"到目前为止一直很享受。我创建的所有内容都有效但我不明白为什么以下内容有效,但最后的代码却没有。

模板

<template name="list">
  <ul>
    {{#each list}}
      <li><a href="/list/{{_id}}">{{name}}</a></li>
    {{/each}}
  </ul>
</template>

<template name="listPage">
  <h2>Tasks: {{name}}</h2>
</template>

路线

Router.route('/list/:_id', {
  template: 'listPage',
  data: function(){
    var currentList = this.params._id;
    return Lists.findOne({_id: currentList});
  }
});

这给出了预期的结果。但是,我很好奇为什么以下不会起作用,因为它似乎正在传递完全相同的东西。与以下内容的唯一区别是:

  • 将Router.route(&#39; lists /:_ id&#39;)更改为Router.route(&#39; lists / randomParm&#39;)
  • this.params._id to this.params.randomParm

模板

<template name="list">
  <ul>
    {{#each list}}
      <li><a href="/list/{{_id}}">{{name}}</a></li>
    {{/each}}
  </ul>
</template>

<template name="listPage">
  <h2>Tasks: {{name}}</h2>
</template>

路线

Router.route('/list/randomParm', {
  template: 'listPage',
  data: function(){
    var currentList = this.params.randomParm;
    return Lists.findOne({_id: currentList});
  }
});

我得到的信息是:

  

哎呀,看起来客户端或服务器上没有路由的网址:&#34; http://localhost:3000/list/TGM9dbRRtspyJy7AR。&#34;

不是:_id和randomParm持有相同的值吗?来自HTML链接的列表项的ID是否被传递到路由URL并用于进行mongo调用?我不太明白:当我点击相同的路由URL时,_id和randomParm是不同的。

1 个答案:

答案 0 :(得分:3)

Param与:

相关

所以你的路线将是

Router.route('/list/:randomParm', {

如果此参数是可选的,请在

后面留下?
Router.route('/list/:randomParm?', {