ng-repeat limit使删除问题

时间:2017-09-10 13:12:19

标签: javascript angularjs angular-material

我有1 ng-click添加md-datepicker:

<md-button ng-click="addItem()" type="button" >Add Infants</md-button>

然后ng-repeat设置为4:

ng-repeat="d in radioData | limitTo: 4 "
ng-value="d.value"
ng-class="{'md-align-top-left': $index==1}"

一切都按预期工作,但我有1 ng点击删除:

<md-button ng-click="removeItem()" type="button">Remove Infants</md-button>

然后问题开始,如果点击超过4次addItem()它没有显示但是为了删除它的开始删除额外的第一个它的某种奇怪。看起来像那里但没有显示。 我通过$index阅读了关于跟踪的信息但没有工作。 我的控制器是:

$scope.addItem = function() {
  $scope.radioData.push({});
};
$scope.removeItem = function() {
  $scope.radioData.pop();
};  

任何想法都会帮助我

1 个答案:

答案 0 :(得分:1)

当您致电addItem()时,您会将新结构推送到radioData。但是,您通过limitTo:4 通过ng-repeat将显示的数据限制为四个项目。这意味着您仍然可以向radioData数组添加四个以上的项目,它们不会与ng-repeat一起显示。因此,当您向radioData数组添加四个以上的项目后删除元素时,radioData数组中仍有四个以上的项目。

您可以通过限制radioData数组中允许存在的项目数来解决此问题,如下所示:

$scope.addItem = function() {
  if ($scope.radioData.length < 4) { //Check there is space for the new struct
    $scope.radioData.push({});
  }
};