2012-04-12 4 views
3

Я возился с примером Meteor Leaderboard. Скажем, я хотел, чтобы отобразить индекс элемента внутри рули #each петля:Доступ к индексу коллекции в Handlebars/Blaze #each loop

{{#each players}} 
    {{> player}} 
{{/each}} 

<template name="player"> 
    <div class="player {{selected}}"> 
    <span class="index">{{index}}</span> 
    <span class="name">{{name}}</span> 
    <span class="score">{{score}}</span> 
    </div> 
</template> 

Обычно можно было бы написать Рули помощника для этого, но у меня возникают проблемы, выяснить, как заставить его работать с Сбор метеоров.

Как это сделать? Спасибо.

+1

ли вы на самом деле попробовать рули вспомогательный подход? [Этот фрагмент] (https://gist.github.com/1371586) работал для меня. – zwippie

+0

@zwip Спасибо кучу. Я попробовал, но использовал другого помощника. – kmurph79

ответ

0

Если вы просто пытаетесь показать Монго генерируется идентификатор просто использовать _id

<span class="id">{{_id}}</span> 

Он покажет уникальный идентификатор индекса в коллекции. Это будет некрасиво.

Возможно, вы неправильно поняли свой вопрос. Извините, если я это сделал.

+0

Просто нашел это! Мне нужен индекс, поэтому он показывал бы 0,1,2 и т. Д. Рядом с игроком. В основном позиция игрока в коллекции. – kmurph79

0

Добавление ответа на этот вопрос. Мне пришлось поставить несколько часов выяснить это

В клиенте

Template.player.data = function(data){

if(type){

return Template[ 'player' ](data);

}

}

В шаблоне

{{#each players}}

{{data this}}

{{/each}}

Это будет работать без проблем.

+0

Я получаю сообщение об ошибке, что тип не определен, что он представляет здесь в вашем примере? – Blaise

0

Вот как я решил это - не идеальное решение - используя тот факт, что Mongo обычно создает индексы, которые увеличивают стоимость.

Template.item.index = function() { 
    return Items.find().count() - Items.find({_id: {$lte: this._id}}).count() + 1 
} 

то я использую это в шаблоне следующим образом: {{индекс}}

Надеется, что это помогает!

2

Существует теперь функция @index в Blaze:

{{#each players}} 
    {{> player [email protected]}} 
{{/each}} 

<template name="player"> 
    <div class="player {{selected}}"> 
    <span class="index">{{index}}</span> 
    <span class="name">{{name}}</span> 
    <span class="score">{{score}}</span> 
    </div> 
</template> 

Template.player.helpers({ 
    index() { 
    var data = Template.currentData(); 
    if(data) { 
     return data.index; 
    } 
    } 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^