1
                        $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);
                        });

也不工作。

有什么帮助吗?提前致谢!

4

2 回答 2

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);用于此目的。其余代码只是在删除后选择适当的行。

于 2013-09-25T12:54:45.520 回答
0

看起来您必须选择下一个 rowindex (或者如果它是网格的最后一行,则选择上一个)。

像这样的东西应该工作:

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);
于 2013-09-22T07:42:43.367 回答