如何在不允许表为空的情况下删除ng-repeat表行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不允许表为空的情况下删除ng-repeat表行?相关的知识,希望对你有一定的参考价值。

我试图删除表中的行但我不希望它永远是空的...表以一行开头,但用户可以添加新行但也删除所有行,将表呈现为空。这是我在控制器中添加和删除行的代码:

$scope.rowItems = [{}];

$scope.addRowItems = function() {
    $scope.rowItems.push(rowItem); 
}

$scope.deleteRowItem = function(item) {
    $scope.rowItems.splice(item, 1);
}

这是我的html代码:

<tr ng-repeat:"rowItem in rowItems track by $index">
   ...rest of row here...
</tr>

任何和所有的帮助将非常感谢!!

答案

您可以在拼接之前检查阵列的长度,并可选择向用户显示警告,警告他表中至少应有一行。

$scope.deleteRowItem = function(item) {
  if($scope.rowItems.length > 1) {
    $scope.rowItems.splice(item, 1);
  } else {
    alert("Can't remove the only row");
  }
}
另一答案

您可以在HTML视图中添加静态行,如下所示:

<tr>
   ...static row columns are here...
</tr>
<tr ng-repeat:"rowItem in rowItems track by $index">
   ...rest of row here...
</tr>

这是个好主意,因为您可以在第一个tr中添加操作按钮/输入,只需添加动作事件即可添加新行或其他内容

或者您可以限制删除组件逻辑中的行,如@31piy所示

以上是关于如何在不允许表为空的情况下删除ng-repeat表行?的主要内容,如果未能解决你的问题,请参考以下文章

编写不带头结点单链表的插入操作和删除操作算法

mysql 忘记密码,重置密码,mysql.user表为空的解决办法

试写出在不带头结点的单链表的第i个元素之前插入一个元素的算法 麻烦帮我修改下

mysql 唯一键

不带头结点的单链表的插入与删除程序写法

sql 关联查询外键为空的情况