web-dev-qa-db-ja.com

Meteor Iron Routerは、テンプレートヘルパーのパラメーターを使用してルートから現在のパスを取得します

テンプレートヘルパーで、次のように Iron.Router (_iron:router_)から現在のパスを取得します。

_Router.current().route.path()
_

ルートパスにパラメータ(例:_/client/:_id/edit_)が含まれていない限り、これは正常に機能します。その場合、path()関数はnullを返します。

ルートにパラメータが含まれている場合、テンプレートヘルパー内の現在のパスを取得するにはどうすればよいですか?

Meteor 1.0を_iron:router_ 1.0.1で使用しています

14
Rico Leuthold

ルートの__id_はコレクションからのものであると思います。ルートの基になっているドキュメントを_route.path_に渡す必要があります。

_Router.route("/client/:_id/edit",{
  name:"edit",
  data:function(){
    return MyCollection.findOne(this.params._id);
  }
});

<template name="edit">
  {{myHelper}}
  {{pathFor route="edit"}}
</template>

Template.edit.helpers({
  myHelper:function(){
    return Router.current().route.path(this);
  }
});
_

アプリでURLをレンダリングするには、デフォルトのpathForヘルパーを使用することをお勧めします。

https://github.com/EventedMind/iron-router/blob/devel/Guide.md#pathfor

このヘルパーは、現在のデータコンテキスト(この場合はMyCollection.findOne(this.params._id))を使用してルートパラメーターを抽出しています。

ただし、ルートからpathメソッドを使用することもできます。このメソッドは、パスを生成するドキュメントを最初の引数として使用します。

14
saimeunt

次の代替方法を試してください。

Iron.Location.get().path;

パラメータ付きのパスが必要な場合は、問題なく動作します。ただし、現在のルートは返されません。

Meteor Iron Routerがルートから現在のパスを取得しない を参照してください

8
Samuel