如何从angularjs中的列表中删除特定行

时间:2014-02-19 09:13:11

标签: javascript angularjs array-splice

Altough到处搜索,找不到解决方案 我在删除列表中的 CORRECT 行时遇到问题。

例如我有以下数组:

$scope.rows = [{
        "ID": 12,
        "customer": "abc",
        "image": "abc.jpg",
},{
        "ID": 13,
        "customer": "klm",
        "image": "klm.jpg",
},{
        "ID": 14,
        "customer": "xyz",
        "image": "xyz.jpg",
}];     

尝试删除ID = 13的行(将从节点服务器接收ID),代码如下:

        Socket.on('delete', function( ID ) {

            var a = $scope.rows.indexOf(ID);
            $scope.rows.splice(a, 1)

        });

但这不会删除正确的行。

如何指定我的参数以删除右侧行:

remove rows("ID" = ID)

3 个答案:

答案 0 :(得分:4)

indexOf搜索数组中的子字符串(而不是关系数组)

试试这个:

var whatIndex = null;
angular.forEach($scope.rows, function(cb, index) {
  if (cb.ID === ID) {
     whatIndex = index;
  }
});

$scope.rows.splice(whatIndex, 1);

答案 1 :(得分:2)

删除当前所选项目:

<a href="#" ng-click="remove($index)">Remove an item</a>                     //this one is dynamically generated link using ng-repeat

 $scope.remove = function (item) {
        $scope.retrieveddata.splice(item, 1);
    }

您可以使用它的索引删除当前项目。($ scope .retreiveddata是我的数组列表)

答案 2 :(得分:0)

在此函数中传递id

$scope.deleteCurrentId = function (ID) {
    for (var i = 0; i <= $scope.row.length; i++) {
        if ($scope.row[i].id == ID) {
            $scope.row.splice(i, 1);
        }
    }
};

$scope.deleteCurrentId = function (ID) {
    angular.forEach($scope.row, function (cb, index) {
        if (cb.id == ID) {
            $scope.row.splice(index, 1);
        }
    });
};