29

パラメータを持つ単純なルートがあります:

this.route('article', {
        path: '/article/:_id',
        data: function() { return Articles.findOne(this.params._id); }
    });

ここで _id を使用して pathFor handlebars ヘルパーを使用したいと思います。

{{#each articles}}
<li><a href="{{pathFor 'article' _id}}">{{title}}</a></li>
{{/each}}

ただし、_idタグをURLに渡す場合、これは機能しません...

4

3 に答える 3

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

それがパラメータを渡す方法です

于 2013-08-25T01:47:04.820 に答える
13

あなたの例では、パラメーターを渡す必要はありません。pathForヘルパーは自動的に現在のデータ コンテキストを使用し、そのオブジェクトからプロパティを取得します。{{#each articles}}イテレータがあるため、現在のデータ コンテキストpathForはリスト内の現在のアイテム (記事) に設定されます。記事オブジェクトには_idプロパティが必要なので、パス ヘルパーは機能します。データ コンテキストを変更したい場合は、別のオブジェクトを最初のパラメーターとしてヘルパーに渡すか、ブロック ヘルパーpathForを使用できます。{{#with anotherDataContextObject}}

v0.5.4 では、Handlebars ハッシュ キー値を使用してコンテキスト オブジェクトを置き換えることもできました。dev ブランチでは、これは当てはまりません。Handlebars ヘルパーでパラメーターとしてキーと値のペアを指定すると、それらがクエリ文字列に追加されます。これを説明するために、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}}
于 2013-09-25T06:33:18.943 に答える
0

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

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

于 2016-09-27T16:23:27.177 に答える