使用拼接删除数组不能正常工作?

时间:2016-04-29 10:18:22

标签: angularjs

当我点击按钮值时,将推送到另一个阵列。接下来我点击相同的按钮,推送项目将被删除。 在我的项目中正确推送完成。但第二次点击同一个按钮,数组中的第一个元素被删除而不是选中的。

这是我的HTML代码。

<a  class="btn {{table.btnClass}} btn-success"  ng-click="getTable(table)" style="padding-left:1px">{{table.tablename}}</a>

这是我的控制器代码

$scope.tableArray=[]
$scope.tableslist=[]
$scope.getTable=function(table){
    table.btnClass = table.btnClass == "btn-danger" ? "btn-success" : "btn-danger"
    console.log(table)
    var exists=false;
    angular.forEach($scope.tableArray, function (list) {
        if ((list.tablename == table.tablename)) {
            console.log(list.tablename)
             console.log(table.tablename)
            exists=true;
            $scope.tableArray.splice(list._id,1)
            return false
        }
     });
  if(!exists){
  $scope.tableslist.push(table)
  $scope.tableArray=$scope.tableslist
  console.log($scope.tableArray)
   table.color="red"
    }
}

请帮帮我

3 个答案:

答案 0 :(得分:3)

在foreach中添加第二个参数,使用index从数组中拼接

 angular.forEach($scope.tableArray, function (list, index) {
    ----------
    -------------------
    $scope.tableArray.splice(index,1)
 })

答案 1 :(得分:0)

要删除数组中的选定项,您可以使用indexOf,如下所述。

<base href="/path/" />

答案 2 :(得分:0)

遇到Splice的类似问题。在我的情况下,我必须解决如下,如果它帮助某人。

如果您正在处理对象,请注意indexOf适用于数组,不适用于该数组中的Object。您可以执行以下操作来识别索引并处理此案例;

$scope.removeReport = function(report) {
    var index = $scope.contact.reports.map(function(r) { return r.id;}).indexOf(report.id);
        if (index >= 0) {
          $scope.contact.reports.splice(index, 1);
        }
}