我在向数组中动态添加项目时遇到问题,该数组用作ng-repeat的模型。
the plunker在这里:http://plnkr.co/edit/W4b34EDR8dP7ems7aFRV?p=preview
我有一个表行列表。在每一行中都有一个选择框,其内容对于每一行都是相同的。选择的ng模型只是作为第一个ng-repeat中的项目的字符串(它更难以解释而不是仅仅看看它的内容!)
我的问题是当我点击按钮添加一行时。请按照以下步骤操作:
添加了新行,但从第3行清除了选择。为什么会发生这种情况,我该如何避免呢?我当然试图谷歌,但找到google上的文字是个难题。
这里有一些代码:
<tr ng-repeat="phase in phases track by $index">
<td>{{$index + 1}}</td>
<td><select ng-model='phase'>
<option ng-repeat="item in availablePhases" ng-value="item">{{item}}</option>
</select>
</td>
</tr>
控制器:
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.phases = ['Phase 1', 'Phase 2'];
$scope.availablePhases = ['Phase 0', 'Phase 1', 'Phase 2', 'Phase 3'];
$scope.add = function() {
$scope.phases.push('');
}
});
谢谢!
答案 0 :(得分:2)
您提供的所有值都相同model
,因此当您更新一个值时,您将全部更新。我不确定为什么它没有改变前两个。为了让它正常工作,只需改变
<select ng-model='phase'>
到
<select ng-model='phases[$index]'>