Позиционный индекс в итерации коллекций Ember.js

Есть ли способ получить позиционный индекс во время итерации в ember.js?

{{#each itemsArray}}
     {{name}}
{{/each}}

Я ищу способ получить что-то вроде:

{{#each itemsArray}}
    {{name}} - {{index}}th place.
{{/each}}

Обновление:

Согласно комментарию @ebryn, приведенный ниже код работает без использования вложенного представления для каждого элемента:

http://jsfiddle.net/WSwna/14/

Хотя для того, чтобы иметь что-то вроде AdjustIndex, потребуется вложенное представление.

21
задан Gubbi 22 February 2012 в 20:30
поделиться

3 ответа

Это старый вопрос, но он все еще получает много хитов. В текущей версии 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}}
22
ответ дан 29 November 2019 в 06:53
поделиться

Начиная с Ember 1.11.0, index является необязательным параметром в блоках each:

{{#each items as |item index|}}
  {{item.name}} is at index {{index}}
{{/each}}
2
ответ дан 29 November 2019 в 06:53
поделиться

Я думаю, что вы могли бы сделать что-то подобное тоже

//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;
});
0
ответ дан 29 November 2019 в 06:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: