如何使用javascript从数组中删除特定行?

时间:2014-02-05 12:28:30

标签: javascript angularjs

我在使用JavaScript splice()方法删除表格行数据时遇到问题。但我不能删除数据,同时删除数组的第一行和最后一行。

$ scope.StudentDetails是我的数组,其中包含所有数据,如id,name,dept,age,address。,

$scope.deleteData = function (item)
{
    var index = $scope.StudentDetails.indexOf(item);
    if (index > -1)
    {
        $scope.StudentDetails.splice(index, 1);
    }
};

enter image description here enter image description here

在第一张图片中我会点击删除。然后它会显示在图片下方..但不会删除确切的数据。 我正在使用以上编码。

使用下面的代码加载我的数据并推送到数组并在表格元素中填充日期。

$scope.Load = function ()
{
    $scope.StudentDetails = [];
    $http({ method: 'GET', url: '/Home/GetStudentDetails' }).success(function (data)
    {
        if (data != null)
        {
            $.each(data.Data, function (index, value)
            {
                $scope.StudentDetails.push(value);
            });

            // $scope.checked = false;
        }
    }).error(function ()
    {
        alert("Failed");
    });
}

请帮助任何人! 在此先感谢!!!

2 个答案:

答案 0 :(得分:1)

我建议你删除这样的删除(假设你正在为学生使用ng-repeat):

<a data-ng-click="deleteStudent($index)">delete</a>

然后在你的控制器中

$scope.deleteStudent = funciton(index){
    $scope.studentDetails.splice(index, 1);
};

你的问题的真正问题是

var index = $scope.StudentDetails.indexOf(item);

不能像您期望的那样工作,它不会查看对象的对象数组。

答案 1 :(得分:1)

删除范围中的条目是没有意义的,因为它来自ajax源。 它可能不再出现在您的范围内,但下次打开页面$scope.Load()时,只会重新加载数据源。 您需要编写一个能够从您的db / json文件或wherever_your_data_is中删除学生的ajax处理程序。 写下你的删除功能:

$scope.deleteData = function (item){
    $http({ method: 'GET', url: '/Home/DeleteStudent'/'+ $routeParams.item }).success(function (data)
    {
       //After succesfull deletion reload the changed scope
        $scope.Load();
    });
};

并从你的html中调用它:

<td><a ng-click="deleteData(your_id_for_this_item)">delete</a> </td>

Angular会自动更新你的范围和dom