Прежде всего, я не разделяю вашего мнения о том, что зацикливание - это беспорядок в шаблонах Ember. Было бы здорово, если бы вы не выдвигали такие мнения как факты. Особенно, если это происходит без каких-либо аргументов.
То, чего вы хотите достичь, может быть сделано с помощью комбинации {{each}}
цикла и помощника шаблона. Как показывает ваш пример, цикл {{each}}
возвращает текущее значение и индекс. Вы не можете получить доступ к элементу массива напрямую, используя индекс, как в JavaScript array[index]
в шаблоне Ember, но вы можете добиться того же с помощью помощника шаблона. Вспомогательный шаблон, назовем его {{object-at}}
, который получает индекс в качестве первого и массив в качестве второго аргумента и возвращает array[index]
.
Давайте рассмотрим пример того, как это будет работать:
{{#let (array 'a' 'b' 'c') as |letters|}}
{{#let (array '1' '2' '3') as |numbers|}}
<ul>
{{#each letters as |letter index|}}
{{letter}} {{object-at index numbers}}
{{/each}}
</ul>
{{/let}}
{{/let}}
Такой помощник по шаблону не будет сложным. Но вам не нужно беспокоиться, потому что он уже доступен как часть ember-composable-helpers .