Angularjs ng-модель, вложенная в ng-repeat, обновляет все

Это должно быть просто. По какой-то причине при использовании ng-model внутри ng-repeat он обновляет все ng-модели внутри этого цикла повторения.

Вот код. Любые идеи? http://plnkr.co/edit/iAgrPwwBMilCyeReeLt9?p=info

Спасибо.


person user3716991    schedule 07.06.2014    source источник


Ответы (1)


Интересный!!!

Проблема в том, что вы сбрасываете row.field с объектом из "$scope.columns"

in

<td>
  <select ng-model="row.field" ng-options="column.title for column in columns"></select>
</td>

Здесь row.field сбрасывается с помощью объекта из $scope.columns, и если вы измените этот объект в одной строке, поскольку другие строки также используют тот же объект, они повторяют одно и то же значение.

Вы можете изменить эту модель на row.field.type как

<td>
    <select ng-model="row.field.type" ng-options="column.type as column.title for column in columns" ng-change="resetRow(row.field)"></select>
</td>

и определите $scope.resetRow в вашем контроллере, чтобы сбросить другие свойства в зависимости от типа поля.

Вот обновленный плункер.

Мне бы хотелось иметь функцию в ng-options для возврата копии выбранного объекта вместо ссылки на объект, чтобы решить вашу проблему.

person Prasad K - Google    schedule 07.06.2014