0

我正在尝试构建一个简单的页面来对记录进行分组,然后添加一个按钮来消除一些记录。

问题是如果删除的记录是第一个,那么所有分组的数据都会被删除。

我认为问题是当我拆分分组数组时:

Plunkr http://plnkr.co/edit/DiO0tiPWeyRDGCoeHpdW?p=preview

$scope.deleteItem = function(item,row){ 

  var index=$scope.reports.indexOf(item)
  $scope.reports.splice(index,1); 
  $scope.noOfPages = Math.ceil($scope.reports.length / $scope.pageSize);
  $scope.pages.then(function(result){
  result.splice(index,1);

  $scope.noOfPages = Math.ceil(result.length / $scope.pageSize);
                $scope.currentPage = 1; 
                console.log(result)
  })
};  
4

1 回答 1

0

你主要做错了两件事:

  1. 试图在结果中删除与报告中相同的索引
  2. 在该行中有更多项目时擦除结果。

一个可能的(工作)修复将是:

$scope.deleteItem = function(item,row){ 

  var lastInRow = true;
  var index=$scope.reports.indexOf(item);
  $scope.reports.splice(index,1);

  //check if any more items match that name (or in the same row)
  for (var i=0; i<$scope.reports.length; ++i) {
    if ($scope.reports[i].name == item.name) {
      lastInRow = false;
      break;
    }
  }
  $scope.noOfPages = Math.ceil($scope.reports.length / $scope.pageSize);

  $scope.pages.then(function(result){
      //get the relevant index for the result array
      var resultIndex = result.indexOf(item.name);

      //if it matches and it isn't the last one - erase that row
      if (result && result[index] == item.name && lastInRow) {
        result.splice(resultIndex,1);  
      }
                $scope.noOfPages = Math.ceil(result.length / $scope.pageSize);
                $scope.currentPage = 1; 
        })
};  
于 2013-09-14T12:32:05.113 回答