在角度ui-grid中检测单元格编辑

ver*_*tti 3 angular-ui-grid

我尝试检测单元格编辑,但以下代码未获取事件。我使用“名称”:“ angular-ui-grid”,“版本”:“ 3.0.0-rc.14”,是否必须定义一些配置来获取事件?

$scope.$on('ngGridEventEndCellEdit', function(data) {
Run Code Online (Sandbox Code Playgroud)

小智 5

我将默认行模板更新为如下所示

rowTemplate: '<div ng-class="{\'row-changed\':row.entity.State==\'changed\'}" ng-click="grid.appScope.fnOne(row)" ng-repeat="col in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ui-grid-cell></div>',
Run Code Online (Sandbox Code Playgroud)

然后在onRegisterApi中

onRegisterApi: function( gridApi ) {
            $scope.gridApi = gridApi;
            $scope.gridApi.edit.on.afterCellEdit($scope,function(rowEntity, colDef, newValue, oldValue){
                if(newValue != oldValue)
                    rowEntity.State = "changed";
            })
        }
Run Code Online (Sandbox Code Playgroud)

现在,如果实体的状态为“更改”,则该行将获得“行更改”类。

如果单元格变回其原始值,则可能要添加一些额外的检查,但这是另一个问题。


小智 1

您对正在编辑的单元格或绑定的数据感兴趣吗?

我向绑定的数据源添加了深度监视,当数组中的任何项目发生更改时,该监视将触发。

unbindWatch = $scope.$watch("array", function (newValue, oldValue) {
    if (newValue != oldValue) {
        vm.isDirty = true;
     }
 }, true);
Run Code Online (Sandbox Code Playgroud)

$watch 返回一个解除手表绑定的方法,停止寻找变化。所以只需执行返回的方法即可结束监视。