В Ember 1.13 и более поздних версиях, какой ключ я должен использовать с каждым при итерации по массиву строк?
В Ember 1.13 следующий код генерирует предупреждение:
{{#each widgetNames as |widgetName|}}
{{component widgetName removeWidget="removeWidget"}}
{{/each}}
Где widgetNames - это массив строк в родительском контроллере.
widgetNames: []
В Ember 1.13 теперь я получаю это предупреждение:
ПРЕДУПРЕЖДЕНИЕ. Использование {{each}}
без указания ключа может привести к необычным поведение. Укажите key
, который идентифицирует уникальное значение в каждый элемент повторяется. Например. {{each model key="@guid" as |item|}}
.
Это было бы достаточно легко установить в типичном сценарии модели, но как указать ключ для массива строк?
Изменить. Этот вопрос обрабатывает предупреждение, которое вы теперь получаете в Ember 1.13 при итерации по массиву строк. Если вы нажмете это предупреждение, вы явно не найдете параметр @index, например Доступ к индексу в #each в emberjs. Infact, ответ Artych показывает два других возможных ключа для использования, которые не были бы релевантными или присутствовали бы в ответе на Доступ к индексу в #each в emberjs, поскольку это относится к @самого индекса.
Ответы
Ответ 1
ОБНОВЛЕНИЕ (июнь 18)
В Ember 1.13.2 используется значение по умолчанию key="@identity"
, чтобы запретить пользователям указывать key=
для каждого вызова {{each}}
.
@guid
и @item
устарели в пользу нового значения по умолчанию.
https://github.com/emberjs/ember.js/releases/tag/v1.13.2
https://github.com/emberjs/ember.js/pull/11461
================= Ответ для Ember 1.13, 1.13.1 =========
Вы можете использовать key="@index"
или key="@item"
.
Есть несколько специальных значений для key
(docs):
-
@index
- индекс элемента в массиве.
-
@item
- элемент в самом массиве. Это можно использовать только для массивов строк или номера.
-
@guid
- Создайте уникальный идентификатор для каждого объекта (использует Ember.guidFor
).
{{#each widgetNames key="@index" as |widgetName|}}
{{component widgetName removeWidget="removeWidget"}}
{{/each}}