Iron router,试图创建一个联系人应用,每个联系人都有单独的页面

iron router, trying to create a contacts app with a separate page for each contact

本文关键字:联系人 应用 单独 router 创建 Iron 一个      更新时间:2023-09-26

我想让每个联系人在集合中都有一组特定的值,比如名字、姓氏和电子邮件。我希望每次从列表中选择联系人时,它都会链接到第二个页面,其中显示该联系人的所有详细信息。

这是我放在Contact.js文件顶部的代码…

Router.route('/post/:_id', function () {
    this.render('Post', {
  data: function () {
    return Contax.findOne({_id: this.params._id});
  }
  });
});

这是当一个特定的联系人被选中时的事件处理程序…

Template.aCont.events({
    "click #view": function() {
      Router.go('/post/:' + this._id);
    }
  });

这里是我的相关html

<template name="contDeets">
  <ul class="list-group">
    <li class="list-group-item">{{this.firstName}}, {{this.lastName}}</li>
  </ul>
</template>
<template name="Post">
  {{#contentFor "headerButtonLeft"}}
    {{>ionNavBackButton}}
  {{/contentFor}}
  {{#contentFor "headerTitle"}}
    <h1 class="title">Contacts</h1>
  {{/contentFor}}
  {{#contentFor "headerButtonRight"}}
  <a id="add" class="button button-clear button-positive" href='/add'>Add</a>
  {{/contentFor}}
  {{#ionView}}
    {{#ionContent}}
      <div id="contactList2">
        {{> contDeets}}
      </div>
     {{/ionContent}}
  {{/ionView}}
</template>

我的代码有什么问题?它正在打开一个带有正确url的新页面,但是它应该显示的信息是…{{this。firstName}}, {{this.lastName}}…

路由声明中的冒号是用来标记参数的。当调用路由时,你不能包含它,而只能为参数提供你想要的值:

Template.aCont.events({
    "click #view": function() {
      Router.go('/post/' + this._id);
    }
});

一切都很好。