如何取消 Angular ui-grid 中的单元格编辑?

How to cancel cell editing in Angular ui-grid?

我在 beginCellEdit 事件中有一些条件

       gridApi.edit.on.beginCellEdit($scope, function(rowEntity, colDef, event) {
            var scope = angular.element(event.currentTarget).scope();
            var selectedRowIndex = scope.rowRenderIndex;
            var selectedColumnName = scope.col.name;

            if ($scope.gridOptions.data[selectedRowIndex-1][selectedColumnName].trim()=='') {      
                alert("You cannot enter the value in this cell");
                // At this place I want to cancel edit and return focus to grid
            } 
        })

是否有任何 preventDefault 或类似的方法可以轻松取消单元格编辑并 return 聚焦到网格。

谢谢!

您可以查看此 plunker 示例以获得条件可编辑字段。

控制器:

var cellEditable = function($scope){
  if($scope.row.entity.oldId4===undefined)
    return false;
  return $scope.row.entity.oldId4!=$scope.row.entity.id4;
}

Gridoptions -> columnDefs:

cellEditableCondition : cellEditable

另一种方法是像这样广播 IUiGridEditContants.events.END_CELL_EDIT 事件:

scope.$broadcast("uiGridEventEndCellEdit");

唯一的缺点是它会关闭所有处于编辑模式的单元格。

仅供参考:以下内容对我不起作用:

 gridApi.rowEdit.setRowsClean([gridRow.entity]);