angularjs ng-repeater动态删除数据

时间:2017-01-12 20:06:08

标签: angularjs angularjs-ng-repeat angular-ui-bootstrap

我有一种用户添加样本数据的情况,如图所示。如何添加删除按钮,仅删除特定样本。从图中可以看出,我想要“删除样本1”来删除样本1记录。

由于

enter image description here

单击“添加样本”按钮时触发的代码

$ scope.addSample = function(){

    $scope.partdetails = [
  {
      "sampleseq": 0,
      "sampleid": 1,
      "attribute": "Height",
      "measureunit": "Centimeter",
      "actualvalue": null,
      "lowerspec": 1.23,
      "upperspec": 3.23,
      "notes": null
  },
  {
      "sampleseq": 0,
      "sampleid": 2,
      "attribute": "Diameter",
      "measureunit": "Inches",
      "actualvalue": null,
      "lowerspec": 1.23,
      "upperspec": 3.23,
      "notes": null
  }
    ];

    $scope.partdetails[0].sampleseq = $scope.sampleCount;
    $scope.partdetails[1].sampleseq = $scope.sampleCount;

    $scope.partdetailsList.push($scope.partdetails[0]);
    $scope.partdetailsList.push($scope.partdetails[1]);

    $scope.sampleCount += 1;
}

enter image description here

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以使用Array.prototype.filter获取新的数据记录,而不会出现谓词函数失败的项目

让我们说你的删除按钮调用一个名为deleteSample的函数,并传递一个示例id:

<强> HTML

... ng-repeat="row in records" ...

<button ng-click="deleteSample(row.sampleid)">Delete sample</button>

<强>控制器

$scope.deleteSample = function(sampleId) {
    $scope.records = $scope.records.filter((row)=> {
        return !angular.equals(sampleId, row.sampleid)
    });
}

当然,这并没有解决您可能需要删除数据库中的行的问题。