删除行后,ng-grid无法选择项目

时间:2013-09-20 22:21:03

标签: angularjs ng-grid

                        $scope.$apply(function () {
                            $scope.myData.splice(index, 1);
                        });
                        $scope.gridOptions.selectItem(index, true);

最后一行根本不起作用:$ scope.gridOptions.selectItem(index,true);

                        $scope.$apply(function () {
                            $scope.myData.splice(index, 1);
                            $scope.gridOptions.selectItem(index, true);
                        });

也不工作。

有任何帮助吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

经过一番努力之后,我找到了解决这个问题的方法,虽然修复这么小的问题看起来很复杂,但它确实有效。我还没有找到更好的工作方法。一旦我发现我会在这里发帖。

$scope.$apply(function () {
                        $scope.myData.splice(index, 1);
                    });    
setTimeout(selectARow, 0);
function selectARow() {
    $scope.$apply(function () {
        if ($scope.myData.length == index) {
            $scope.gridOptions.selectItem(Math.max(0, index - 1), true);
        }
        else {
            $scope.gridOptions.selectItem(index, true);
        }
    });
};

这个想法是在$scope.myData.splice(index, 1);从数组中删除一行之后,需要一些时间从网格中删除该行并将所选项重置为网格中的第一个记录。完成所有这些步骤后,我们需要$scope.gridOptions.selectItem(index, true);。因此,setTimeout(selectARow, 0);用于此目的。其余代码只是在删除后选择一个正确的行。

答案 1 :(得分:0)

看起来你必须选择下一行rowindex(如果它是网格的最后一行,则为previous)。

这样的事情应该有效:

var indexToRemove = parseInt(index);
var indexToFocus = ($scope.myData.length > (indexToRemove + 1) ? (indexToRemove + 1): (indexToRemove - 1));
$scope.gridOptions.selectItem(indexToRemove , false);
$scope.myData.splice(indexToRemove , 1);
$scope.gridOptions.selectItem(indexToFocus , true);