2014-10-20 2 views
0

Я использую контрольную модель для работы с массивом флажков с каждым выбранным, который можно удалить. Кажется, все работает нормально, пока я не использую его внутри ng-repeat.ng-repeat не обновляет модель с треком

Проблема в том, что удаленные флажки все еще существуют, когда я добавляю track by $index вместе с ng-repeat. Если я удалю этот track by, он отлично работает (но в моем реальном приложении мне нужно, чтобы track by работал).

Вот plnkr, Demo

Чтобы увидеть проблему, вы можете выполнить следующие действия.

  1. Выберите флажок вы хотите
  2. Удалить эти выбранные
  3. Проверьте чек все кнопки, чтобы увидеть,

Теперь посмотрим на один с трека по, он оставит некоторые флажок снят. Если вы проверите его вручную, в нем будет добавлено старое значение. Это странно.

Любая помощь или объяснений будет очень признателен, спасибо

+2

Почему вы не отслеживаете 'id' – harishr

+0

Чтобы прояснить комментарий HarishR в случае, если это не очевидно, используйте' ng-repeat: глагол в треке глаголов verb.id' –

ответ

1

Если вам все еще нужно отслеживать с помощью, использовать его с идентификатором объекта. Предполагая, что идентификатор объекта всегда будет уникальным.

Ошибка при работе с одним и тем же ключом. (Это означает, что два различных объекта отображаются в том же DOM элемент, который не представляется возможным.)

Так вместо этого:

<tr ng-repeat="verb in verbs track by $index"> 
    <td> 
     <input type="checkbox" checklist-model="list.verbs" checklist-value="verb.id"> 
    </td> 
    <td> 
     {{verb.id}} 
    </td> 
    <td> 
     <span>{{verb.text}}</span> 
    </td> 
    </tr> 

использовать это:

<tr ng-repeat="verb in verbs track by verb.id"> 
    <td> 
     <input type="checkbox" checklist-model="list.verbs" checklist-value="verb.id"> 
    </td> 
    <td> 
     {{verb.id}} 
    </td> 
    <td> 
     <span>{{verb.text}}</span> 
    </td> 
    </tr> 

http://plnkr.co/edit/UTtQQJIbtRPdGh0YhRMH?p=preview

+0

спасибо, не знал, что мы можем использовать track by .property, может работать, большинство примеров, которые я вижу, они используют только индекс $ index, поэтому я просто подумал, что это единственный способ и предположить, что он будет генерировать уникальный идентификатор каждый раз, когда изменяется модель , –