3

ルートがあります

Router.route('/post/:_id', {
  name: 'post',
  template: 'post'
});

そして助っ人

Template.post.helpers({
  post: function () {
    return Posts.findOne(this._id);
  }
});

指定された投稿が見つかりません。しかし、私は間違った方法でIDを取得していると思います。セッションを使用しているプロジェクトをいくつか見てきました。これは本当に必要ですか?ルーターからパラメータを取得することはできませんか?

4

2 に答える 2

3

通常、次のようにルート レベルでデータ コンテキストを設定します。

Router.route("/post/:_id",{
  name:"post",
  template:"post",
  waitOn:function(){
    return this.subscribe("post",this.params._id);
  },
  data:function(){
    return Posts.findOne(this.params._id);
  }
});

メソッドではRouteController、 を使用して URL パラメータにアクセスできますthis.params.parameterName

次に、投稿テンプレートで、専用のヘルパーを必要とせずに、ルーターによって設定されたデータ コンテキストにアクセスできます。

<template name="post">
  post id is {{_id}}
</template>

投稿リストに関する限り、同じパターンに固執することができます:

Router.route("/posts",{
  name:"posts",
  template:"posts",
  waitOn:function(){
    return this.subscribe("posts");
  },
  data:function(){
    return {
      posts:Posts.find()
    };
  }
});

<template name="posts">
  {{#each posts}}
    {{> postItem}}
  {{/each}}
</template>
于 2014-12-14T15:37:31.697 に答える