2

这应该很简单。出于某种原因,当在 ng-repeat 中使用 ng-model 时,它会更新该重复循环内的所有 ng-model。

这是代码。有任何想法吗? http://plnkr.co/edit/iAgrPwwBMilCyeReeLt9?p=info

谢谢。

4

1 回答 1

0

有趣的!!!

问题是您正在使用“$scope.columns”中的对象重置 row.field

<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以根据字段类型重置其他属性。

这是更新的plunker

我希望在 ng-options 中有一个功能来返回所选对象的副本而不是对象引用来解决您的问题。

于 2014-06-07T05:17:32.453 回答