2015-07-17 4 views
0

Как указано here, Ember 1.13 необходим ключ для вспомогательного помощника {{each}}. Начиная с Ember 1.13.2 по умолчанию используется @identity.Ember 1.13 каждая петля в каждой петле

Теперь я пытаюсь исправить свой код, у меня есть каждый цикл, вложенный внутри другого (фрагмент кода, который показывает календарь). Я получаю следующее сообщение об ошибке:

Uncaught Error: Duplicate key found ('(null)') for '{{each}}' helper, please use a unique key or switch to '{{#each model key="@index"}}{{/each}}'. 

Но даже если я добавить @guid как ключ, ошибка все еще отображается. Код:

Не понимаю. Поскольку @guid должен создать уникальный идентификатор для каждого объекта, почему я все еще получаю эту ошибку duplicate key found?


EDIT: Мое предположение, что Duplicate key found не имел ничего общего с вложенными каждой петли явно было не так. Попробовав построить скрипку, как предложил Китлер, я понял свою проблему (см. Ответ).

+0

Этот вопрос, который вы связали с состояниями ** @ guid и @item устарели в пользу нового значения по умолчанию. ** – Craicerjack

+0

Это только мой вопрос, 'new default' не работает, если у вас есть цикл, завернутый внутри цикла , Если вы получили «нормальный» цикл, значение по умолчанию упрощает (потому что вам не нужно ничего делать). –

+0

Вам не нужен ключ, если вы его не используете ... –

ответ

2

Это регресс в v1.13.x и, как ожидается, будет решена в патче, возможно v1.13.6

Это вопрос решенный: https://github.com/emberjs/ember.js/issues/11549

И запрос объединенное тянуть: https://github.com/emberjs/ember.js/pull/11861

+0

Подтверждение: Ember 1.13.6 действительно исправляет эту проблему: https://github.com/emberjs/ember.js/releases/tag/v1.13.6 -> # 11861 [BUGFIX] Обновить HTMLBars, чтобы дублировать {{each} }. –

0

После проб и ошибок я понял, что вызывает ошибку.

Причина
Некоторых деталей в моем цикле, где null. Ember 1.13.x и выше пытается добавить идентификатор для каждого элемента. Поскольку null ничего не значит, первый null-item получит ключ null, так как Ember предоставляет ничего-ключа ни к чему. Следующие null-items также получают ничего-ключа, поскольку Ember делает это за каждые null-item.

Ошибка
Поскольку помощник требуется уникальный идентификатор для каждого элемента, угасающий выдает ошибку Duplicate key found ('(null)'); говоря программисту, некоторые элементы имеют одинаковый идентификатор.

Решение
Крепление это довольно легко, просто обеспечить пустой объект ({}) вместо null. Поскольку один пустой объект не совпадает с другим пустым объектом, Ember создаст уникальный идентификатор для каждого пустого объекта!


Код пример: Bin.

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