Подтвердить что ты не робот

Как передать параметр pathFor в Handlebars для Iron-Router с метеоритом?

У меня есть простой маршрут с параметром:

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

Я хотел бы использовать помощник handlefor handleFor здесь с помощью _id:

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

Это не работает для передачи тега _id в url, хотя...

4b9b3361

Ответ 1

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

Вот как вы передаете параметр

Ответ 2

В вашем примере вам не нужно передавать какие-либо параметры. Помощник 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}}

Ответ 3

В Meteor 1.3.X я использую опции для помощника pathFor.

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