You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS ui.grid编辑单元格后自动勾选复选框问题求助

在AngularJS ui.grid中编辑单元格后自动勾选对应行复选框的解决方案

你的代码核心问题有两个:一是复选框绑定了全局的$scope.checkboxData,导致所有行的复选框共用同一个状态;二是没有在单元格编辑完成的事件中添加自动勾选的逻辑。以下是修复方案:

步骤1:为每行数据添加独立的勾选状态属性

在你的数据源初始化时,给每个数据实体添加一个isSelected属性,用于单独控制该行复选框的状态:

// 假设你的数据源是$scope.myData,根据实际情况替换
$scope.myData.forEach(item => {
  item.isSelected = false; // 默认未勾选
});

步骤2:修改复选框列的模板绑定

把复选框的ng-model从全局的checkboxData改成当前行实体的isSelected,确保每行的复选框状态独立:

$scope.gridOptions.columnDefs = [
  // 其他列保持不变
  { 
    displayName: 'Select', 
    name: 'checkbox', 
    enableFiltering: false, 
    enableCellEdit: false, 
    cellTemplate: '<span style="margin-left: 0px;"><input class="Checkbox" type="checkbox" ng-model="row.entity.isSelected" ng-click="grid.appScope.checkboxCheck(row.entity, row.entity.isSelected)" id="{{row.entity.seq_no}}"></input><label for="{{row.entity.seq_no}}"><span></span></label></span>',
    width: 60 
  }
];

步骤3:在编辑完成事件中自动勾选当前行

利用afterCellEdit事件,在单元格编辑完成后直接设置当前行的isSelected为true:

$scope.gridOptions.onRegisterApi = function(gridApi) {
  $scope.gridApi = gridApi;
  gridApi.edit.on.afterCellEdit($scope, function(rowEntity, colDef, newValue, oldValue) {
    $scope.msg.lastCellEdited = 'ID: ' + rowEntity.id + ', Column: ' + colDef.name + ', New Value: ' + newValue + ', Old Value: ' + oldValue;
    // 编辑完成后自动勾选当前行
    rowEntity.isSelected = true;
    $scope.$apply(); // 触发视图更新
  });
};

这样修改后,每次编辑任意可编辑单元格,对应行的复选框就会自动被勾选,且每行的复选框状态互不干扰。

内容的提问来源于stack exchange,提问作者javiens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:27:41