私はパラメータを持つ単純なルートを持っています:
this.route('article', {
path: '/article/:_id',
data: function() { return Articles.findOne(this.params._id); }
});
ここで、_idとともにpathForハンドルバーヘルパーを使用したいと思います。
{{#each articles}}
<li><a href="{{pathFor 'article' _id}}">{{title}}</a></li>
{{/each}}
これは_idタグをURLに渡す場合には機能しません...
<li><a href="{{pathFor 'article' _id=this._id }}">{{title}}</a></li>
それはあなたがパラメーターを渡す方法です
あなたの例では、パラメータを渡す必要はありません。 pathFor
ヘルパーは現在のデータコンテキストを自動的に使用し、そのオブジェクトからプロパティを取得します。 {{#each articles}}
イテレータがあるため、pathFor
の現在のデータコンテキストは、リスト(記事)の現在のアイテムに設定されます。記事オブジェクトには_id
プロパティが必要なので、パスヘルパーが機能します。データコンテキストを変更する場合は、別のオブジェクトを最初のパラメーターとしてpathFor
ヘルパーに渡すか、{{#with anotherDataContextObject}}
ブロックヘルパーを使用できます。
V0.5.4では、Handlebarsハッシュキー値を使用して、コンテキストオブジェクトを置き換えることもできました。 devブランチではこれは当てはまりません。ハンドルバーヘルパーでキーと値のペアをパラメーターとして指定すると、それらがクエリ文字列に追加されます。 devブランチの変更の例を次に示します。
{{pathFor 'article' article q=some+query}}
//=> "/article/abcd/?q=some+query
または
{{#with article}}
{{pathFor 'article' q=some+query}}
//=> "/article/abcd/?q=some+query
{{/with}}
Meteor 1.3.Xでは、pathForヘルパーのオプションを使用しています。
{{pathFor route = '' data = query = '' hash = ''}}