4

我的团队一直在尝试以下方法:

   $scope.addTest = function () {
        var TestRow = {
            "name": "xx",
            "description": "xx",
            "subjectId": 15
        };
        $scope.gridOptions.selectAll()
        var testRowLength = $scope.gridData.push(TestRow);
        $scope.gridOptions.selectItem(testRowLength - 1, true);
    }

但是最后一个 selectItem 没有正确地进行选择。所以我们尝试了以下方法:

        $scope.$apply(function () {
            $scope.gridData.push(TestRow);
            $scope.gridOptions.selectItem(testRowLength - 1, true);
        });

现在我们收到一条错误消息:

Error: $apply already in progress

这个问题作为一个问题发布在 ng-grid 博客上,但它只是刚刚发布,我们需要尽快帮助。我希望有人能给我们建议,我们应该如何做

4

1 回答 1

7

您选择的行太快,请改用ngGridEventData事件。我将新行推到网格的开头,所以滚动更容易一些:

$scope.add = function(){
    var emptyContact = Utilities.newContact();
    var e = $scope.$on('ngGridEventData', function() {
        $scope.contactsGridOptions.selectItem(0, true);
        window.scrollTo(0,0);
        e();
    });

    $scope.contacts.unshift(emptyContact);
};

有关滚动的更多信息:如何滚动 ngGrid 以显示当前选择?

相关 ng-grid 问题:https ://github.com/angular-ui/ng-grid/issues/354

于 2013-09-08T17:02:37.853 回答