Angular将项添加到ng-repeat数组

时间:2016-05-31 22:16:02

标签: angularjs angularjs-ng-repeat ng-repeat

我在向数组中动态添加项目时遇到问题,该数组用作ng-repeat的模型。

the plunker在这里:http://plnkr.co/edit/W4b34EDR8dP7ems7aFRV?p=preview

我有一个表行列表。在每一行中都有一个选择框,其内容对于每一行都是相同的。选择的ng模型只是作为第一个ng-repeat中的项目的字符串(它更难以解释而不是仅仅看看它的内容!)

我的问题是当我点击按钮添加一行时。请按照以下步骤操作:

  1. 点击"添加阶段"。将出现一个带有空白值的新行
  2. 在新行中选择一些内容
  3. 点击"添加阶段"再次。
  4. 添加了新行,但从第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('');
      }
    });
    

    谢谢!

1 个答案:

答案 0 :(得分:2)

您提供的所有值都相同model,因此当您更新一个值时,您将全部更新。我不确定为什么它没有改变前两个。为了让它正常工作,只需改变

<select ng-model='phase'>

<select ng-model='phases[$index]'>