javascript - ng-repeat limit 使删除成为问题

标签 javascript angularjs angular-material

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

<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-click 用于删除:

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

如果在 addItem() 上单击超过 4 次,问题就开始了,它不会显示,但要删除它,首先要删除额外的内容,这有点奇怪。看起来它在那里但没有显示。 我通过 $index 阅读了有关 track 的信息,但无法正常工作。 我的 Controller 是:

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

任何想法都会帮助我

最佳答案

当您调用 addItem() 时,您将一个新结构推送到 radioData。但是,您通过ng-repeatlimitTo:4将显示的数据限制为四项。这意味着您仍然可以向 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({});
  }
};

关于javascript - ng-repeat limit 使删除成为问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46141064/

相关文章:

javascript - 无法将 AngularJS 变量传递给 Bootstrap 中的 div 模态

html - 如何将 Material 图标和标题文本对齐在同一行?

Angular Material 在 StackBlitz 中似乎不起作用

javascript - 在父类中初始化变量(JavaScript/CoffeeScript 习语)

javascript - 用新数据替换附加数据

javascript - AngularJS 漫画阅读网站

javascript - AngularJS 变量值未在 View 中更新?

javascript - Svelte 等同于 React 的 props.children?

javascript - Angular 为 2 的三态复选框

javascript - Angular Material 的日期选择器的日期错误