web-dev-qa-db-ja.com

Meteoriteを使用したIron-RouterのハンドルバーでpathForにパラメーターを渡す方法は?

私はパラメータを持つ単純なルートを持っています:

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に渡す場合には機能しません...

29
Chet
<li><a href="{{pathFor 'article' _id=this._id }}">{{title}}</a></li>

それはあなたがパラメーターを渡す方法です

61
Chet

あなたの例では、パラメータを渡す必要はありません。 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}}
13
cmather

Meteor 1.3.Xでは、pathForヘルパーのオプションを使用しています。

{{pathFor route = '' data = query = '' hash = ''}}

0
Gere