Есть ли способ получить позиционный индекс во время итерации в ember.js?
{{#each itemsArray}}
{{name}}
{{/each}}
Я ищу способ получить что-то вроде:
{{#each itemsArray}}
{{name}} - {{index}}th place.
{{/each}}
Обновление:
Согласно комментарию @ebryn, приведенный ниже код работает без использования вложенного представления для каждого элемента:
Хотя для того, чтобы иметь что-то вроде AdjustIndex, потребуется вложенное представление.
Это старый вопрос, но он все еще получает много хитов. В текущей версии Ember.JS можно использовать _view.contentIndex
для отображения текущего индекса внутри цикла.
{{#each}}
Index: {{_view.contentIndex}}
{{/each}}
Если вам нужен скорректированный индекс (например, начиная с 1), тогда есть возможность создания хелпера многократного использования increment
Ember.Handlebars.registerBoundHelper('increment', function(integer) {
return integer + 1;
});
, тогда вы будете использовать его следующим образом
{{#each}}
Index: {{increment _view.contentIndex}}
{{/each}}
Обновление
Начиная с 11.11 вы также можете сделать
{{#each people as |person index|}}
Index: {{increment index}}
{{/each}}
Начиная с Ember 1.11.0, index
является необязательным параметром в блоках each
:
{{#each items as |item index|}}
{{item.name}} is at index {{index}}
{{/each}}
Я думаю, что вы могли бы сделать что-то подобное тоже
//add index property to all each queries
Handlebars.registerHelper('each', function(context, block) {
var ret = "";
for(var i=0, j=context.length; i<j; i++) {
context[i].index = i;
ret = ret + block(context[i]);
}
return ret;
});